JSFuck

前的内容是:alert(1)]]
JSFuck(或为了避讳脏话Fuck写作 *JSFck** )是一种深奥的 JavaScript 编程风格。以这种风格写成的代码中仅使用 [、]、(、)、! 和 + 六种字符。此编程风格的名字衍生自仅使用较少符号写代码的Brainfuck语言。与其他深奥的编程语言不同,以JSFuck风格写出的代码不需要另外的编译器或解释器来执行,无论浏览器或JavaScript引擎中的原生 JavaScript 解释器皆可直接运行。鉴于 JavaScript 是弱类型语言,编写者可以用数量有限的字符重写 JavaScript 中的所有功能,且可以用这种方式执行任何类型的表达式。

缘起
长谷川阳介(Yosuke Hasegawa)于2009年7月创建了一个名为“jjencode”的网络应用程序,可将一切的JavaScript代码混淆为[]()!+,\"$.:;_{}~=这十八个字符的排列组合。

2010年1月,在一个Web应用程序安全站点上的“混淆”版块内,举行了一场非正式的竞赛。这场竞赛的目标是让JavaScript编程将所需的最少字符降至八个以下([]()!+,/),而该帖文的回复者们设法消除了对,和/字符的需求。截至2010年3月,网上有一个名为“JS-NoAlnum”的在线编码器,它只使用六个字符来混淆JavaScript。

2010年底,长谷川阳介制作了一个名为JSF*ck的新编码器,它只使用了六个字符来混淆JavaScript。2012年,马丁·克莱普在GitHub上创建了一个编码器项目“jsfuck”,并创建了JSFuck.com网站,放置了一个使用该编码器实现的Web应用程序。

用途与安全性
JSFuck可用于代码混淆,一个优化版JSFuck编码器已经被用于混淆jQuery代码,使这一流行的JavaScript函数库可以仅使用六个字符来实现原本的所有功能。

此外,JSFuck可用于绕过恶意代码检测,且可以被用于跨站脚本攻击。因为缺乏原生JavaScript应有的特征,类似JSFuck的JavaScript混淆技术可帮助恶意代码绕过入侵防御系统或内容过滤器。现实中,因为JSFuck中缺少字母数字字符,且eBay中的内容过滤器曾存在缺陷,使得卖家曾经可以在他们的eBay拍卖页面中嵌入任意JSFuck脚本

备注
;对于“编码方式”章节中的内容:

参考来源
外部链接

评论 (0)

  • 还没有评论,来抢沙发吧。