web-dev-qa-db-ja.com

このドキュメントは、別のサイトのクロスサイトスクリプティングから取得したコンテンツまたは何か違うものですか?

これは私が作業しなければならなかったウェブサイトにありました。私にはその恐ろしいアイデアのように思えますが、私は彼らにそれがそうであると告げる前に、他のインプットを得たいと思っていました。

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の使用は悪いです。ありがとう!

2
John

技術的にはクロスサイトスクリプティングであると言えますが、これはユーザーが入力した内容を変更するために何も使用されないため、攻撃や攻撃の穴ではありません。

コードが行っているのは、他のドメインから取得した結果を現在のドメインのdivに挿入することです。ここには信頼の意味があります。つまり、otherdomain.comからmagic_php_file.phpによって返されるものは、ID #divのdivに挿入するのに適しています。

これは、広告やその他の埋め込みコンテンツをロードするために行われたと想像できます。これは、たとえばGoogle Adsenseを使用した場合とまったく違いはありません。Googleは、Googleドメインから別のスクリプトをロードしてページで実行するHTMLに挿入するスクリプトを提供します。

1
Itai

この例ではAJAXリクエストを使用してPHPファイルを取得およびロードしているため、PHPファイルからのCookieは同じドメインにロードされていると思います。これにより、外部PHPファイルを介してロードされたCookieにローカルサイトのCookieにアクセスできます。

JSはブラウザでクロスドメインPHPファイルを呼び出すため、Same-Originポリシーによってブロックされる必要があります。 PHPファイルのCORSヘッダーが許可に設定されている場合、Same-Originポリシーが破られてPHPファイルがロードされます。 JSは、ローカルサイトから外部PHPスクリプトにCookieを渡すことができます。

この回答には多くの有益な情報があります:

https://stackoverflow.com/a/17299796/8600052

1
J Doe