CSRF対策

<手順>
トークン発行処理、チェック処理(関数化)
②セッションの開始(※1)
③WEB表示時→トークンを発行(※2)
 フォーム送信時→トークンチェックの処理
④フォームにhiddenタグを仕込ませ、セッショントークンを格納



トークンを発行処理

<?php
function setToken() {
  $token = sha1(uniqid(mt_rand(), true));
  $_SESSION['sstoken'] = $token;
}

トークンチェック処理

<?php
function checkToken() {
  if (empty($_SESSION['sstoken']) || ($_SESSION['sstoken'] != $_POST['token'])) {
    echo '<html><head><meta charset="utf-8"></head><body>不正なアクセスです。</body></html>';
  exit;
  }
}

<?php
session_start();

$pdo = connectDb();

<?php
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
  setToken();
} else {
  checkToken();
}

<?php
  <input type="hidden" name="token" value="<?php echo h($_SESSION['sstoken']); ?>" />

(※1)必ずデータベース接続前
(※2)セッションにトークンを仕込ませる。