HTML
JavaScript
兵庫県警

【☠️危険なプログラム☠️】"何回閉じても無駄ですよ〜"と無限にアラートを出すサイトのコードを添削してみた。

新作書きました↓

☠️†卍️ 兵庫県警に補導される難解スクリプト️ ️卍†☠️


☠️元ネタ☠️

不正プログラム書き込み疑い補導|NHK 兵庫県のニュース


まず該当のURLからソースを取ってくる

curl http://n41050z.web.fc2.com/burakura.html > burakura.html


burakura.html

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>無題</title>
<SCRIPT LANGUAGE="JavaScript">
for ( ; ; ) {
window.alert(" ∧_∧ ババババ\n( ・ω・)=つ≡つ\n(っ ≡つ=つ\n`/  )\n(ノΠU\n何回閉じても無駄ですよ~ww\nm9(^Д^)プギャー!!\n byソル (@0_Infinity_)")
}
</SCRIPT>
</head>
<body />
</html><script type="text/javascript"><!--
var fc2footerparam = 'charset=' + (document.charset ? document.charset : document.characterSet) + '&url=' + document.location + '&service=0&r=' + Math.floor(Math.random()*99999999999);
var fc2footertag = '<' + 'script src="//vip.chps-api.fc2.com/apis/footer/?' + fc2footerparam + '" charset="UTF-8"><' + '/script>';
document.write(fc2footertag);
//--></script>
<!-- FC2, inc.-->
<img src="//media.fc2.com/counter_img.php?id=50" style="visibility:hidden" alt="inserted by FC2 system" width="0" height="0">
<!-- FC2, inc.-->

</html>から以下はFC2によって自動的に付与されるものだと思われるからそれを除いた以下のソースを添削していく。


burakura.html

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>無題</title>
<SCRIPT LANGUAGE="JavaScript">
for ( ; ; ) {
window.alert(" ∧_∧ ババババ\n( ・ω・)=つ≡つ\n(っ ≡つ=つ\n`/  )\n(ノΠU\n何回閉じても無駄ですよ~ww\nm9(^Д^)プギャー!!\n byソル (@0_Infinity_)")
}
</SCRIPT>
</head>
<body />
</html>


添削


DOCTYPE宣言

HTMLやXHTMLのどのバージョンで作成されているかを宣言するため最初の行に<!DOCTYPE html>を追記するべき。

<html>


<!DOCTYPE html>
<html>
...


script内のlanguage属性

script内のlanguage属性はobsoleteなので削除したほうがいい。

<SCRIPT LANGUAGE="JavaScript">

...
</SCRIPT>

<SCRIPT>
...
</SCRIPT>


<body />

これだとSelf-closing構文になってしまう。

bodyは空の要素ではないため(コンテンツを持つ要素であるため)、開始タグの<body>と解釈されてしまう。

そのために以下のように修正するとよい。

<body/>


<body></body>

参考:


lang属性

<html>にはlang属性をつけることが推奨される。

<html>


<html lang="ja">


メタタグ

HTML5では上記のままで問題ない。

charset属性を使用すれば以下のよう短くかける。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">


<meta charset="UTF-8">

参考: <meta>-HTML5タグリファレンス


SCRIPTタグ

XHTML1.0では大文字(UPPER CASE)でかくべきだが、HTML4.01以降から区別されない。

問題はないが、他のタグと統一性を保つために小文字で描くべき。

<SCRIPT>

...
</SCRIPT>

<script>
...
</script>

参考: タグは大文字・小文字どちらで書くべき? - タグHTML


for(;;)

for(;;) ...でも無限ループになるが、可読性のためにwhile(true) ...を使った方がいい。

for ( ; ; ) {


while (true) {


AA文字列

AAを1行で書いているために可読性が低い。

+で連結したほうが見やすい。

window.alert(" ∧_∧ ババババ\n( ・ω・)=つ≡つ\n(っ ≡つ=つ\n`/  )\n(ノΠU\n何回閉じても無駄ですよ~ww\nm9(^Д^)プギャー!!\n byソル (@0_Infinity_)")


window.alert(
" ∧_∧ ババババ\n" +
"( ・ω・)=つ≡つ\n" +
"(っ ≡つ=つ\n" +
"`/  )\n" +
"(ノΠU\n" +
"何回閉じても無駄ですよ~ww\n" +
"m9(^Д^)プギャー!!\n" +
" byソル (@0_Infinity_)"
)


インデント

インデントをつけた方がいい。


添削結果


brakura.html

<!DOCTYPE html>

<html lang="ja">
<head>
<meta charset="UTF-8">
<title>無題</title>
<script>
while (true) {
window.alert(
" ∧_∧ ババババ\n" +
"( ・ω・)=つ≡つ\n" +
"(っ ≡つ=つ\n" +
"`/  )\n" +
"(ノΠU\n" +
"何回閉じても無駄ですよ~ww\n" +
"m9(^Д^)プギャー!!\n" +
" byソル (@0_Infinity_)"
);
}
</script>
</head>
<body></body>
</html>


ちなみに

以下だけでも動く。


hoge.html

<script>

while (true) {
window.alert(
" ∧_∧ ババババ\n" +
"( ・ω・)=つ≡つ\n" +
"(っ ≡つ=つ\n" +
"`/  )\n" +
"(ノΠU\n" +
"何回閉じても無駄ですよ~ww\n" +
"m9(^Д^)プギャー!!\n" +
" byソル (@0_Infinity_)"
);
}
</script>


余談

なんで無限アラートのURL貼っただけで書類送検になるんですかねぇ...

ウェブ開発してるときにバグ発生したら捕まる世界になるのかな:thinking: