2016-01-16 24 views
7
をロードする

参考:これは潜在的な「活用」、私はすべての[img] BBCodesへcrossorigin="anonymous"を追加しましたから、私のユーザー生成コンテンツを保護するためにPrevent HTTP Basic Authentication from displaying prompt for images問題は、画像

IE11でうまくいきました。悪用をテストしたときに、イメージは認証ダイアログをトリガーしなくなりました。

しかし、Chromeでは、画像がまったく読み込まれていないため、悪用されません。代わりに、私は明らかにかなり一般的なエラーを取得しています:

Image from origin 'XXXXX' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'YYYYY' is therefore not allowed access.

はたぶん私の理解が間違っているが、私は、属性の"anonymous"値はこれが動作することが可能だろうと思いました。

私は何か不足していますか?あれば、この問題を防ぐために他にどのようなオプションがありますか?

答えて

9

最初に私の理解によれば、イメージはIEで読み込まれなかったと言うことを意味します。どちらが完璧です!それがうまくいかなければならない。

第2に(&最後に)、Chromeの動作も完璧です。

プロセス/詳細:サーバーは、(匿名へのアクセス制御 - 許可 - 原点を設定することによって)元のサイトに資格情報を与えるものではありません

、画像が汚染され、その使用が制限されています。

cross-origin imageがあればキャンバスにコピーすることができますが、キャンバスを読むことで画像が盗まれたり、ダウンロードされたりすることはありません。ただし、CORSを使用することにより、イメージが格納されているサーバーは、クロス・オリジン・アクセスが許可されているため、イメージ・データにキャンバスでアクセスできます。

ヘッダーが同じ発信元でない場合、つまりリソー​​スがCORS要求なしで(つまり、Origin:HTTPヘッダーを送信せずに)フェッチされ、無効になった場合は、列挙されたものとして扱われますキーワードanonymousが使用されました。

私の推測では、nullは存在しないか無効であるかのいずれかであり、その場合はanonymousのように扱われます。

Chromeでは、IEが行っていることを正確に行うことを意味しています。


ではないが、直接の答え、しかし、

links-役立つが、それがお役に立てば幸い! :)ハッピーコーディング!

+0

最近の主な問題は、「ハック」が失敗するのではなく、アクセス制御ヘッダーを持たないためにChromeがすべての画像を完全にブロックするということです。 'crossorigin =" anonymous "属性を削除すると、イメージは再び機能しますが、脆弱性をハックに戻します。 –

+1

はい。私は明確にコミュニケーションできないのかどうかはわかりませんが、あなたが言っているのは期待される行動です。 – bozzmob

+2

bozzmob良い説明! @NiettheDarkAbsolはい、クロムは、ユーザーのリクエストが本物であるかどうかを信じる立場にないため、アクセスコントロールヘッダーを送信しないとすべての画像をブロックします。これがアクセス制御メカニズムの仕組みです。 –

1

私が調査を1として、

Firstly What do you mean by Tainted canvas:

Although you can use images without CORS approval in your canvas, doing so taints the canvas. Once a canvas has been tainted, you can no longer pull data back out of the canvas. For example, you can no longer use the canvas toBlob(), toDataURL(), or getImageData() methods; doing so will throw a security error.
ref: https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image

CORS settings attributes:

In HTML5, some HTML elements which provide support for CORS, such as img or video , have a crossorigin attribute (crossOrigin property), which lets you configure the CORS requests for the element's fetched data. By default (that is, when the attribute is not specified), CORS is not used at all.
The "anonymous" keyword means that there will be no exchange of user credentials via cookies, client-side SSL certificates or HTTP authentication

あなたにリンクしている画像は、CORS対応でない、ので、あなたはAccess-Control-Allow-Originエラーを取得しています。

問題を解決するには、crossOrigin属性だけでなく、適切なヘッダーを送信する必要があります。これをcrossOriginに設定してuse-credentialsに設定すると、サーバーがコンテンツに対する権利を持っているかどうかを判断するために使用できる資格情報要求ヘッダーが設定されます。イメージのためにCORSヘッダーがサーバーから返され、そのイメージがキャンバス上で使用されるとき、origin-cleanフラグはtrueです。