#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;
と表示して終了するようにする