13

ホットリンクを防ぐために、Cloudfront でプライベート ディストリビューションを作成しました。署名付き URL を使用してオブジェクトへのリンクを作成できましたが、現在は正常に機能しています。

私の唯一の懸念は、署名されていないため、css スタイルシート内の画像リンクが機能しないことです。たとえば、次のようにします。

background-image: url('../img/bg.png');

スタイルシートには署名付き URL が含まれていないため、背景画像は表示されず、Cloudfront はコンテンツの提供を拒否します。

これを防ぐためにできることはありますか?

4

6 に答える 6

6

一歩下がって、基本的な質問をさせてください。あなたの画像がホットリンクされることを本当に心配していますか? 本当に?もし誰かがそうするとしたら、それがあなたに与える現実的な影響は何ですか? 本当に?

人々がホット リンクを使用できないようにする正当な理由がある場合、CDN サービス (この場合は CloudFront) が適切なソリューションであるかどうかはわかりません

正直に言うと…</p>

于 2012-10-05T08:20:57.143 に答える
1

一般に、css ファイルにプライベート ディストリビューションを使用することは非常に悪い考えです。(おそらく常に変化する) 有効期限と署名を css url に追加すると、ブラウザーがそれらをキャッシュできなくなり、そもそも Cloudfront を使用する有用性が大幅に低下するためです。

また、長い有効期限を使用している場合でも、css 背景画像をどうしてもホットリンクしたい人は、css ファイルをスクレイピングしてそこから画像の URL を抽出するスクリプトをセットアップするだけです。

于 2012-10-06T15:23:41.943 に答える
1

いくつかの方法があり、それぞれに欠点があります。

静的 CSS ファイルの代わりに、テンプレート (またはリソースを CloudFront の場所にマップする他のスマートな方法) から生成します。ここでは、Last-Modified および max-age Cache ヘッダーを使用して、ある程度のキャッシュを使用できます。最も難しい解決策ですが、間違いなく最良の保護です。

すべての CSS リソースのリダイレクト パスを設定します。基本的には、パスを CF に書き換える小さなスクリプトです (CSS リソースのみを書き換えるように注意してください)。これにより、現在の静的 CSS を維持できますが、リダイレクト スクリプトの潜在的なホット リンクが開かれます。

その中間に、1.5d で期限切れになるリンクを含む静的 CSS ファイルを生成してサーバーの負荷を軽減する cron スクリプトがあります。

于 2012-08-27T14:39:02.253 に答える
0

CDN ホスト名全体を 1 日または 2 日ごとにローテーションすることができれば、css で何も変更する必要はありません (css が例のように CDN にあると仮定します)。

http://www.explainthatstuff.com/blocking-cloudfront-hotlinks.html

そうすれば、CSS は署名付き URL を必要とせず、ホットリンクを同様に効果的にブロックできます。

于 2012-09-01T21:06:33.473 に答える
-1

<base>yr htmlでタグを使用するのはどうですか?試していませんが、役立つかもしれません。

もう 1 つのオプションは、php を使用してスタイルシートを生成することです。たとえば、すべての画像の署名付き URL を取得し、それらを変数としてスタイル要素にプッシュします。

于 2012-09-17T21:55:49.210 に答える