これから、sessionとcsrf対策について
sessionとは、webページ上でサーバーが生き続け、履歴やパワスードが、
保持し続ける状態のこと
その対策で、csrf_tokenを作成し、webページを移動するごとにcsrf_tokenを発行し、
外部からの悪意のある第三者からの侵入を防ぐためにcsrf_tokenが生成される。
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']?>">
formで$_SESSION['csrf_token']を送る。
これで、次の〜.phpへtokenを移動できる。
session_start();
require_once('common/function.php');
if(!isset($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = random();
}
sessionスタート
commonファイルのfunction.phpから接続する
csrf_token変数に値が入っているかどうかを確認するためのisset関数
ランダムにsessionが変わるごとにcsrf_tokenが発行される。(function.phpから取り出す)
function random($length = 16) {
return substr(bin2hex(random_bytes($length)), 0, $length);
}
if(isset($_POST["lid"]) || isset($_POST["lpw"]) || isset($_POST["csrf_token"])) {
if($_POST['csrf_token'] !== $_SESSION['csrf_token']) {
echo "このサイト以外からのアクセスは禁止しています。";
exit;
}
変数に値が入っているかどうかを確認するためのisset関数
(POSTされた、「lid」「lpw」「csrf_token」があるか確認)
todoに入ったcsrf_tokenとsessioncsrf_tokenが一致しないなら
このサイト以外からのアクセスは禁止しています。を出力する。
終了