JSONPという「負の遺産」:なぜ我々は未だにクロスドメインの悪夢にうなされるのか
技術の進化は残酷だ。かつて、ブラウザの「同一生成元ポリシー(SOP)」という堅牢な檻を回避するための救世主として崇められたJSONP(JSON with Padding)は、今やセキュリティアーキテクトにとって「技術的負債」という名の地雷原でしかない。
現場でコードをレビューしていると、レガシーな外部連携モジュールでJSONPを見かけることがある。その度に私は、エンジニアにこう問いかける。「なぜ、攻撃者にスクリプト実行権限を無条件で献上する設計を選ぶのか?」と。
JSONPの本質的な欠陥:実行される「コールバック」の罠
JSONPのメカニズムを低レイヤから解剖すれば、その脆弱性は一目瞭然だ。JSONPは、タグがクロスドメイン制限を受けないというブラウザの挙動を悪用する。
サーバー側で動的に生成されたスクリプトが、クライアント側で即座にeval()に近い形で実行される。ここで起きているのは「データの受け渡し」ではない。「外部から動的に注入された任意のコードの実行」である。
// 攻撃者が仕掛けるJSONPの罠
// callbackパラメータに悪意ある関数を注入する
const url = "https://trusted-api.com/data?callback=alert(document.cookie)//";
// ブラウザはこれを
コメント