【テクニカル・上級編】URLスキーム(javascript:)のフィルタリングと検証 – アプリケーションセキュリティ & 安全な開発防御ガイド

盲点としての javascript: スキーム:ブラウザの解釈仕様と「ホワイトリスト」の真実

現場でコードレビューをしていると、今なお javascript: スキームを起点としたXSS脆弱性に遭遇する。OWASP Top 10が浸透し、フレームワークの自動エスケープが標準化した現代において、なぜこれほどまでにこの手のアナログな攻撃が生き残っているのか。

答えはシンプルだ。「ブラウザがURLとして解釈可能な文字列の境界線」を、多くのエンジニアが過小評価しているからに他ならない。

ブラウザのパーサーという「魔境」

href="javascript:alert(1)" という記述がなぜ実行されるのか。これはブラウザのURLパーサーが、RFC 3986で規定されたスキーム定義を解釈する際、特定の条件下で「実行可能なコンテキスト」へと遷移してしまう仕様に起因する。

特に厄介なのは、DOM型のXSSだ。フロントエンドで動的に生成される タグや