2012-04-05 19 views
1

クロスドメインの要求を拒否するということについて、私はいくつかの質問を読んだが、クライアント側の保護(同じオリジンポリシー)に頼っているだけである。サーバー側で実行できる保護のレイヤーはありますか?私はヘッダー原点、ヘッダーリフェラーに頼るべきですか?いくつかのスパイウェア対策プログラムによってヘッダーリフェラルが変更されたと言う人もいます。一部の人は、元のヘッダーオプションを含んでいると言っていますが、クロムのようなものはありません。
ヘッダーは変更できます(リファラーはsetrequestheaderメソッドでも変更できます)。しかし、これについて保護サーバー側を行ったことがある場合は、何かを共有してください。ドメイン間のHTTP要求からの保護方法(サーバー側)

P.S. :可能性は、各リクエスト(すべてのタイプのリクエスト、データのみを取得するリクエスト、サーバー上のデータを変更するリクエスト)をトークン化することですが、それはお尻の痛みになります...

P.P.S. :omgは同期装置のトークンパターンについて迷惑を掛けません。それは解決策、他の何かの理想だろうか?

+0

セッション管理は、クロスドメイン要求から保護するための良い方法です。 – Scuzzy

+0

@scuzzyより具体的にしてください。あなたの答えは –

答えて

0

市長の質問はどのような攻撃に対して保護したいのですか?

CSRFから保護したい場合は、ランダムなセキュリティトークンを持つプロセスフォームが必要です。フォームの後

<input type="hidden" name="token" value="random value generated on server side for each request" /> 

同様

は、サーバー側のセッションに保存された要求とトークンからトークン比較する必要が提出します。

他のドメインからのリソースの読み込みを拒否する(サーバーからの画像やスクリプトの読み込みなど)場合は、各リソースに同様のトークンを追加できます。

<img src="/images/mysuperimg.png?token=<token>" /> 

同様

など

+0

です:) P.P.S.が追加されました。 :P –

0

私はあなたがCSRFの聞いたことがあると仮定?

誰もが、あなたのサイトから、誰もあなたのサイトに投稿することができ、同じようにページを要求することができます:ここ

はCSRFの動作概要と、それがどのように防ぐことだのです。登録フォームがあるとしましょう。あなたのフォームをコピーし、任意のHTMLページに入れ、JS検証を削除し、無限にスパムすることができます。脅威のように聞こえますか?

ただし、セッションIDを使用することでこれを防ぐことができます。これは一意の文字列(通常はMD5またはSHA-1)で、ページをレンダリングする前にPHPのセッション変数に格納されます。このセッションIDは、フォーム上の非表示の入力フォームでも表示されます。フォームが送信されると、PHPは、フォームと共に送信されたセッションIDが、セッション変数に格納されているセッションIDと一致するかどうかをチェックします。それが有効であれば続行し、サーバーに保管されているものは無効にされ、再利用されません。

また、一定の時間が経過した場合、そのセッションIDは期限切れになります。ユーザーがあなたの15分以上の有効期限を過ぎてフォームに残っているとします。そのフォームを使用すると無効になります。新しいセッションIDを取得するためにページを更新する必要があります


これで、フォームではなくページリクエストでどのように使用するかを尋ねることがありますか?

私は2 ways to send over session ids to the serverを知っています。これはcookieまたはurlでsessionidを追加することによって得られます。

クッキーの場合も同様です。サーバーによってページが生成された場合、ページはサーバー上にセッションIDを作成し、コピーをクッキーとして送信します。次のページリクエスト、リクエストのクッキーを読んだり、セッションIDを取得したり、サーバー上のものと比較したりして、リクエストが有効であれば、処理を続行します。それ以外の場合は無効です。

Cookieを無効にしているユーザーの場合は、ページ上にあるすべてのリンクのURLにsessionidを追加できます。サイトによっては、URLパラメータがsid、またはsessidなどであることに注意してください。それは彼らがそれをどのように渡すかです。ページ内のすべてのリンクにこのIDが追加されます。リンクをクリックすると、すべてのサーバーはURLからそのセッションIDを取得し、サーバーと比較します。

非常に長い回答:D

+0

あなたの長い答えのために:)P. P.を追加:) –

関連する問題