私はあなたが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
セッション管理は、クロスドメイン要求から保護するための良い方法です。 – Scuzzy
@scuzzyより具体的にしてください。あなたの答えは –