锁定老帖子 主题:大家看过这样的JS代码吗...
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-01
应该是炫耀吧,不过炫耀的话,也要搞个稍微高级点的啊
|
|
返回顶楼 | |
发表时间:2011-10-01
一个国外大赛的代码或其模仿
|
|
返回顶楼 | |
发表时间:2011-10-01
我試著解釋一下 先將代碼格式化一下 (__=-~-~[]) * (-~[]<<(__)) + __ * (-~[]<<(__)) + (____=-~-~__) + (-~[]<<(__)) * -~____ + ____ + __ + 0; 將變量重新命名 (b=-~-~[]) * (-~[]<<(b)) + b * (-~[]<<(b)) + (a=-~-~b) + (-~[]<<(b)) * -~a + a + b + 0; 其中以第一行為例 [] 空陣列被轉為數字時會返回0,例如 (+[] = 0); ~ 是位運算取反,即將正數加一變負數,負數加一變正數,例如 (~2 = -3), (~-2 = 1); -~ 也就是將數字 + 1,因此 (b=-~-~[]) 等於 (b = 1 + 1 + 0 = 2)。 << 是位算運左移,這裡有點難也不須特別解釋,就是將一數乘以2的某數冪,總知 (-~[]<<(b)) 等於 (1 << (2) = 1 * 2 * 2 = 4) 最後 (b=2) * (4) + 2 * (4) + (a=4) + (4) * 5 + 4 + 2 + 0; 2*4+2*4+4+4*5+4+2 = 46 |
|
返回顶楼 | |
发表时间:2011-10-02
最后修改:2011-10-02
请参考: http://www.iteye.com/topic/947149
这种代码最大用处是:如果你是黑客,可以用来绕过一些针对跨站点脚本攻击的检查。某些站点对于服务器端返回的json,在进行简单的合法性检查之后,会直接eval,而种另类的代码,很有可能能通过这类检查。 这个故事主要是想说,客户端不要轻易相信服务器端发过来的东西。 |
|
返回顶楼 | |
发表时间:2011-10-02
没事找事啊。。。
|
|
返回顶楼 | |
发表时间:2011-10-07
廢廢廢 写道 我試著解釋一下 先將代碼格式化一下 (__=-~-~[]) * (-~[]<<(__)) + __ * (-~[]<<(__)) + (____=-~-~__) + (-~[]<<(__)) * -~____ + ____ + __ + 0; 將變量重新命名 (b=-~-~[]) * (-~[]<<(b)) + b * (-~[]<<(b)) + (a=-~-~b) + (-~[]<<(b)) * -~a + a + b + 0; 其中以第一行為例 [] 空陣列被轉為數字時會返回0,例如 (+[] = 0); ~ 是位運算取反,即將正數加一變負數,負數加一變正數,例如 (~2 = -3), (~-2 = 1); -~ 也就是將數字 + 1,因此 (b=-~-~[]) 等於 (b = 1 + 1 + 0 = 2)。 << 是位算運左移,這裡有點難也不須特別解釋,就是將一數乘以2的某數冪,總知 (-~[]<<(b)) 等於 (1 << (2) = 1 * 2 * 2 = 4) 最後 (b=2) * (4) + 2 * (4) + (a=4) + (4) * 5 + 4 + 2 + 0; 2*4+2*4+4+4*5+4+2 = 46 我擦,现在真的像表情了, 实在是看不懂............. |
|
返回顶楼 | |
发表时间:2011-10-08
贝壳水母 写道 我擦,我还以为这是一组表情....面壁....
+1 |
|
返回顶楼 | |
发表时间:2011-10-09
看不懂,这个全不?
|
|
返回顶楼 | |
发表时间:2011-10-10
好高深哦.
|
|
返回顶楼 | |
发表时间:2011-10-10
廢廢廢 写道 我試著解釋一下 先將代碼格式化一下 (__=-~-~[]) * (-~[]<<(__)) + __ * (-~[]<<(__)) + (____=-~-~__) + (-~[]<<(__)) * -~____ + ____ + __ + 0; 將變量重新命名 (b=-~-~[]) * (-~[]<<(b)) + b * (-~[]<<(b)) + (a=-~-~b) + (-~[]<<(b)) * -~a + a + b + 0; 其中以第一行為例 [] 空陣列被轉為數字時會返回0,例如 (+[] = 0); ~ 是位運算取反,即將正數加一變負數,負數加一變正數,例如 (~2 = -3), (~-2 = 1); -~ 也就是將數字 + 1,因此 (b=-~-~[]) 等於 (b = 1 + 1 + 0 = 2)。 << 是位算運左移,這裡有點難也不須特別解釋,就是將一數乘以2的某數冪,總知 (-~[]<<(b)) 等於 (1 << (2) = 1 * 2 * 2 = 4) 最後 (b=2) * (4) + 2 * (4) + (a=4) + (4) * 5 + 4 + 2 + 0; 2*4+2*4+4+4*5+4+2 = 46 厉害! |
|
返回顶楼 | |