1

PHP PDO データのサニタイズについて調べていたところ、次の投稿に出会いました。

PDO & 日付のサニタイズ/HTML の削除

私のコードは PDOStatement bindParam を使用して SQL インジェクションを防止していると確信していますが、このコメントを読みました (言い換え)

「トークンで $_POST を使用すると、CSRF を回避するのに役立ちます」

トークンとは何を意味し、どのように実装するのですか?

4

1 に答える 1

0

トークンは何らかのハッシュである場合があり、それをセッションに保存し、フォームを介して送信します。フォームデータを検証する前に、次のことを確認します。

  1. トークンが送信され、
  2. トークンはセッションに保存されます

簡単な実装:


<?php
  session_start();
  if(!isset($_SESSION['token']))
  {
    $_SESSION['token']=uniqid();
  }
?>

<form method="post">
    <input name="token" type="hidden" value="<?php echo $_SESSION['token'];?>">
    <input name="something"  value="some data to send">
    <input type="submit">
</form>

<?php
  if(isset($_POST['something']))
  {
    if(!isset($_POST['token']) || $_POST['token']!==$_SESSION['token'])
    {
      echo 'missing a valid token';
    }
    else
    {
      echo 'got a valid token, I will use the data';
    }
  }
?>

于 2012-07-12T22:39:56.257 に答える