VaultPress::add_js_token PHP Méthode

add_js_token() public méthode

public add_js_token ( )
    function add_js_token()
    {
        $nonce = $this->get_login_tokens();
        $token = $nonce['current'];
        // Uglyfies the JS code before sending it to the browser.
        $whitelist = array('charAt', 'all', 'setAttribute', 'document', 'createElement', 'appendChild', 'input', 'hidden', 'type', 'name', 'value', 'getElementById', 'loginform', '_vp');
        shuffle($whitelist);
        $whitelist = array_flip($whitelist);
        $set = array(0 => array('+[]', 'e^e'), 1 => array('+!![]', '2>>1', "e[{$whitelist['type']}].charCodeAt(3)>>6"), 2 => array('(+!![])<<1', "e[{$whitelist['_vp']}].replace(/_/,'').length"), 3 => array("(Math.log(2<<4)+[])[e[{$whitelist['charAt']}]](0)", "e[{$whitelist['_vp']}].length"), 4 => array('(+!![])<<2', "e[{$whitelist['input']}].length^1", "e[{$whitelist['name']}].length"), 5 => array('((1<<2)+1)', 'parseInt("f",0x10)/3'), 6 => array('(7^1)', "e[{$whitelist['hidden']}].length"), 7 => array('(3<<1)+1', "e[{$whitelist['hidden']}].length^1"), 8 => array('(0x101>>5)', "e[{$whitelist['document']}].length"), 9 => array('(0x7^4)*(3+[])', "e[{$whitelist['loginform']}].length", "(1<<e[{$whitelist['_vp']}].length)^1"), 'a' => array("(![]+\"\")[e[{$whitelist['charAt']}]](1)", "e[{$whitelist['appendChild']}][e[{$whitelist['charAt']}]](0)", "e[{$whitelist['name']}][e[{$whitelist['charAt']}]](1)"), 'b' => array("([]+{})[e[{$whitelist['charAt']}]](2)", "({}+[])[e[{$whitelist['charAt']}]](2)"), 'c' => array("([]+{})[e[{$whitelist['charAt']}]](5)", "e[{$whitelist['createElement']}][e[{$whitelist['charAt']}]](0)"), 'd' => array("([][0]+\"\")[e[{$whitelist['charAt']}]](2)", "([][0]+[])[e[{$whitelist['charAt']}]](2)"), 'e' => array("(!![]+[])[e[{$whitelist['charAt']}]](3)", "(!![]+\"\")[e[{$whitelist['charAt']}]](3)"), 'f' => array("(![]+[])[e[{$whitelist['charAt']}]](0)", "([]+![])[e[{$whitelist['charAt']}]](e^e)", "([]+![])[e[{$whitelist['charAt']}]](0)"));
        $js_code = <<<JS
<script type="text/javascript">
/* <![CDATA[ */
(function(){
\tvar i,e='%s'.split('|'),_=[%s],s=function(a,b,c){a[b]=c};
\tif(this[e[{$whitelist['document']}]][e[{$whitelist['all']}]]){
\t\ttry {
\t\t\ti=this[e[{$whitelist['document']}]][e[{$whitelist['createElement']}]]('<'+e[{$whitelist['input']}]+' '+e[{$whitelist['name']}]+'='+(e[{$whitelist['_vp']}]+(!![]))+' />');
\t\t}catch(e){}
\t}
\tif(!i){
\t\ti=this[e[{$whitelist['document']}]][e[{$whitelist['createElement']}]](e[{$whitelist['input']}]);
\t\ts(i,e[{$whitelist['name']}],e[{$whitelist['_vp']}]+(!![]));
\t}
\ts(i,e[{$whitelist['type']}],e[{$whitelist['hidden']}]).
\ts(i,e[{$whitelist['value']}],(%s+""));
\ttry {
\t\tvar __=this[e[{$whitelist['document']}]][e[{$whitelist['getElementById']}]](e[{$whitelist['loginform']}]);
\t\t__[e[{$whitelist['appendChild']}]](i);
\t} catch(e){}
})();
/* ]]> */
</script>
JS;
        $chars = array();
        for ($i = 0; $i < strlen($token); $i++) {
            if (isset($set[$token[$i]])) {
                $k = array_rand($set[$token[$i]], 1);
                $chars[] = $set[$token[$i]][$k];
            } else {
                $chars[] = $token[$i];
            }
        }
        $random = array_unique($chars);
        shuffle($random);
        $random = array_flip($random);
        foreach ($chars as $i => $v) {
            $chars[$i] = sprintf('_[%d]', $random[$v]);
        }
        $code = preg_replace("#[\n\r\t]#", '', sprintf($js_code, join('|', array_keys($whitelist)), join(',', array_keys($random)), join('+"")+(', $chars)));
        echo $code;
    }
VaultPress