文章来源:开源中国
原文链接:
https://www.oschina.net/news/105040/infinite-javascript-popup-prank
日本刈谷市警方近日质询并指控了一名13岁的女学生,起因是她将一段恶意代码的链接放到了在线公告栏上,广泛传播代码。这段有问题的恶意代码是弹出警告消息的无限循环,每当你点击“确定”就会立即显示新的消息。
对代码感兴趣的童鞋可点击:
https://web.archive.org/web/20180313151740/http://n41050z.web.fc2.com/burakura.html进行访问。
可以看到,这就是十分常见的恶作剧无限弹窗,点了“确定”按钮,这个窗口便会一直弹出。这里的效果就是输出颜文字(kaomoji)和一条短消息,翻译过来就是“多次关闭它是没用的。”
不过通过移动浏览器访问可能看不到这个效果,因为它们普遍都默认阻止弹出式窗口。而每款主流的桌面浏览器对这种无限弹窗也都有处理方案。比如说,Edge 浏览器提供了一个复选框,可以阻止页面显示后续对话框,而 Chrome 让你可以关闭选项卡 —— 尽管有对话框。
△ 微软 Edge 浏览器让人们很容易阻止 JavaScript 无限警告的循环
代码本身极其简单,它最终的效果不过是产生一个无限循环和一个警告框:
for ( ; ; ) {window.alert(" ∧_∧ ババババ\n( ・ω・)=つ≡つ\n(っ ≡つ=つ\n`/ )\n(ノΠU\n何回閉じても無駄ですよ~ww\nm9(^Д^)プギャー!!\n byソル (@0_Infinity_)")}
代码就长这样,不过这与短短一天内导致1507台计算机系统崩溃的代码不完全一样。
警方在调查这起犯罪行为时仔细检查了公告栏的用户日志,发现其他人也涉嫌附有链接。为此,警方搜查了一名失业男子和一名47岁的建筑工人所住的房子。这三个人中没有一个人被指控实际编写这个无限循环。女孩解释其行为时称,自己经常遇到这样的恶作剧,以为如果有人点击链接会很好玩。
消息中出现的推特用户 0_Infinity_ 有一个受保护的帐户,但该用户在自我介绍部分留下了一条消息,表明他们不明白为什么这个脚本在今天引起如此大的动静,该脚本是在2014年编写的。
为了抗议日本警察采取的行动和将此行为定为犯罪的荒谬做法,东京开发者 Kimikazu Kato 在 GitHub 上创建了一个名为 Let's Get Arrested(来逮捕我们)的仓库(https://github.com/hamukazu/lets-get-arrested)。
fork 这个项目,然后创建一个名为 gh-pages 的分支,就能创建一个托管在 GitHub 上的简单网站,该网站只含有无限循环警告,犯罪行为简直触手可及。
△ https://github.com/hamukazu/lets-get-arrested/blob/master/README.zh_hans.md
△ 提供了多国语言版本