FC2ブログ

CSRF対策

#07 CSRF対策を施そう
http://dotinstall.com/lessons/sns_php_v2/9607
を参考にCSRF対策を学習

今回、変更を加えるのは
signup.php になる

sha1はハッシュという技術で
暗号化とは異なる

暗号化は
鍵があれば元に戻せるけど
ハッシュは
元に戻せない

function setToken(){
}

function checkToken(){
}
というユーザー関数を作り

setToken() のほうは適当な文字列をつくり
それをセッションのほうにセットする

mt_rand()で適当な文字列を作成し
sha1() で暗号化する

これを$token に格納しておく

$token = sha1(uniqid(mt_rand(), true));
$_SESSION['token']=$token;
というようになる

そしてHTML部分に
<input type="hidden" name="token" value="<?php echo h($_SESSION['token']); ?>">
というように
hidden というタイプを設定することで
画面には見えないようにセットすることができる

こうしておけば php のほうで
token による判定ができるようになる

ソースをブラウザで見てみると
tokenの value が毎回変わるのを確認できる

次に、checkToken() で
セッションに入っているものが正しいか判定する

これには if を使う
if(empty($_SESSION['token']) || ($_SESSION['token'] != $_POST['token'])){

token が空
もしくは token がPOSTされたものと一致しない場合
ときの処理になる

このときの処理は
echo "不正なPOSTが行われました";
exit;
と表示して終了するようにする
スポンサーサイト



コメント

非公開コメント

最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック