web-dev-qa-db-ja.com

$ .support.cors = trueを使用しても安全ですか? jQueryで?

JQueryのajaxメソッドを使用して、別のドメインのWebサービスにアクセスしようとしていました。いくつかの調査を行った後、クロスサイトスクリプティングを防ぐために、これは仕様によるものではないようです。

私はこの行を含めることになる回避策に出くわしました:

$.support.cors = true;

私のjavascriptコードの一番上に。私が理解していることから、これによりjQueryでのクロスサイトスクリプティングが可能になります。

このコード行があると、私のサイトは攻撃を受けやすくなりますか? XSSがセキュリティの問題として議論されていることをいつも聞いてきましたが、XSSの正当な用途はありますか?

52
Abe Miessler

XSSは、jQueryで有効にできる機能ではありません。 jQueryコアにXSS脆弱性があった場合は非常にveryですが、可能性があり、その名前は DOMベースのXSS です=。

「クロスオリジンリソース共有」またはCORSはXSSと同じではありません、[〜#〜] but [〜#〜]、ただし、 WebアプリケーションにはXSSの脆弱性があり、攻撃者はそのドメイン上のすべてのリソースにCORSのようなアクセス権を持ちます。つまり、CORSを使用すると、XSSの脆弱性を完全に導入する必要がないように、 同じOriginポリシー を破る方法を制御できます。

$.support.corsクエリ機能はAccess-Control-Allow-Origin HTTP応答ヘッダー。これは脆弱性である可能性があります。たとえば、WebアプリケーションにAccess-Control-Allow-Origin: *すべてのページで、攻撃者はXSS脆弱性と同じレベルのアクセス権を持つことになります。 CORSヘッダーを導入するページに注意し、* できるだけ。

したがって、あなたの質問に答えるために:[〜#〜] no [〜#〜]回避方法があるため、WebアプリケーションはXSS脆弱性を導入する必要はありません。 SOP CORS/jsonp/cross domain proxies/ access-control-Origin など。

35
rook

ブラウザでCORSを有効にしているが、jQueryでまだサポートされていない場合にのみ役立ちます。

CorsをまだサポートしていないがクロスドメインXHRリクエスト(windowsガジェットなど)を許可する環境でクロスドメインリクエストを有効にするには、$。support.cors = true;を設定します。 CORS WD

このプロパティをtrueに設定するだけでは、セキュリティの脆弱性は発生しません。

11
bjornd

ハッカーがスクリプトコードを挿入してリクエストを別のドメインに変更できる場合、スクリプトにこのjavascriptフラグを設定することもできます。

したがって、このフラグが設定されているかどうかは、侵入のこの時点ではあまり変わりません。

3
Tim