LoginSignup
1
0

More than 1 year has passed since last update.

PHPで「csrf_token」と「session」について

Last updated at Posted at 2022-09-19

これから、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が一致しないなら
このサイト以外からのアクセスは禁止しています。を出力する。
終了

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0