タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

sessionとCSRFに関するkururi0421のブックマーク (3)

  • Webアプリケーションと2度押し対策 【VISH+サイトマスター.jp Blog 】

    たとえば、何かの予約を行い、予約した結果を指す一意な番号を画面に出力することにします。 登録を行う部分のロジックは(リスト1)のようになります: 1. データベースに情報を登録する 2. 番号をふる 3. 画面に番号を表示する (リスト1) 2度押しの問題は A. 確定ボタンの複数回押下 B. 完了画面の再読込 の2点があります。 対策として最も簡単なものはクライアントサイドスクリプトを用いた対策です。A. を防ぐことができます。 <input type="submit" onclick="this.disabled=true;this.form.submit()"> ただし、スクリプトは簡単に迂回ができてしまいます。 そのほかの対策としては、HTTP Location ヘッダを用いたリダイレクトを用いた対策です。 再読込を行った際には、直前のリクエストが繰り返されます。 確認画面 → (

  • すごいリロード対策 - p4lifeのメモ

    メモ, PHPPHP TIPS】 58. すごいリロード対策紹介されているのはシンプルなワンタイムトークン.単純なリロード対策であれば ticket の値は乱数でなくても良い.ここを乱数にすることで CSRF 対策も兼ねている.ただこの方法は,場合によってはフォームを正常に送信できなくなってしまう問題がある. 例えば,入力画面→入力確認画面と遷移してから別のウィンドウで入力画面→入力確認画面と遷移すると,前の入力確認画面のフォームは ticket が無効になり,フォームを送信できなくなる(複数画面同時編集ができない). 解決策としては,発行したトークンを全て記憶しておき,POST されたトークンと照合する方法がある. confirm.php session_start(); $token = sha1(uniqid(mt_rand(), true)); // トークンをセッションに追加す

  • ふつうのリロード対策

    一般的な登録フォームの画面遷移は、 入力画面→入力確認画面→完了画面 であるかもしれないけど処理の流れとしては、 入力画面表示処理→入力確認画面表示処理→登録(メール送信)処理→完了画面表示処理 になる。 処理を分けることにより、完了画面でリロードされても、二度も登録処理が行われることはない。 個人的には、完了画面で登録(メール送信)処理を行うのは、あまり好きではない。 登録(メール送信)処理と完了画面表示処理を同一処理上で行おうとすると、面倒なリロード対策を行わなくてはいけない。 それで件のページの内容に行き着く。 すごいリロード対策 件のページの内容が『すごい』というのはCSRF(クロスサイトリクエストフォージェリ)対策を同時に行っている点でしょう。 CSRFは、通常のフローを通らずに登録処理だけを行おうとする攻撃である。コメントスパムなんかがよい例。 CSRF対策としては、『リファラ

    ふつうのリロード対策
  • 1