これは私が作業しなければならなかったウェブサイトにありました。私にはその恐ろしいアイデアのように思えますが、私は彼らにそれがそうであると告げる前に、他のインプットを得たいと思っていました。
var url = 'https://www.otherdomain.com/magic_php_file.php';
document.write('<script>jQuery( "#div" ).load( "' + url + '" );<\/script>’);
Document.writeはotherdomain.comとは異なるドメインで発生するため、これは彼らが作成したクロスサイトスクリプティングホールであると思われます。私の懸念はXSSとCookieへのアクセスでしたが、他の誰かがそれら以外の問題を理解するのを手伝ってもらえますか?document.write&loadの使用は悪いです。ありがとう!
技術的にはクロスサイトスクリプティングであると言えますが、これはユーザーが入力した内容を変更するために何も使用されないため、攻撃や攻撃の穴ではありません。
コードが行っているのは、他のドメインから取得した結果を現在のドメインのdivに挿入することです。ここには信頼の意味があります。つまり、otherdomain.com
からmagic_php_file.php
によって返されるものは、ID #div
のdivに挿入するのに適しています。
これは、広告やその他の埋め込みコンテンツをロードするために行われたと想像できます。これは、たとえばGoogle Adsenseを使用した場合とまったく違いはありません。Googleは、Googleドメインから別のスクリプトをロードしてページで実行するHTMLに挿入するスクリプトを提供します。
この例ではAJAXリクエストを使用してPHPファイルを取得およびロードしているため、PHPファイルからのCookieは同じドメインにロードされていると思います。これにより、外部PHPファイルを介してロードされたCookieにローカルサイトのCookieにアクセスできます。
JSはブラウザでクロスドメインPHPファイルを呼び出すため、Same-Originポリシーによってブロックされる必要があります。 PHPファイルのCORSヘッダーが許可に設定されている場合、Same-Originポリシーが破られてPHPファイルがロードされます。 JSは、ローカルサイトから外部PHPスクリプトにCookieを渡すことができます。
この回答には多くの有益な情報があります: