Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

新作書きました↓
☠️†卍️ 兵庫県警に補導される難解スクリプト️ ️卍†☠️

☠️元ネタ☠️

不正プログラム書き込み疑い補導|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:

redshoga
ヌルスタックエンジニア🔰 衝動で生きてる ※記事の内容は所属組織とは関係ありません
https://ichioka.tokyo
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした