🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

PHPフォームの安全な作り方

お問い合わせフォームは簡単に見えますが、入力チェック、XSS対策、CSRF対策、二重送信対策を入れないとトラブルになりやすい部分です。

最低限の入力チェック

<?php
$errors = [];
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
$message = trim($_POST['message'] ?? '');

if ($name === '') {
  $errors[] = 'お名前を入力してください。';
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
  $errors[] = 'メールアドレスの形式が正しくありません。';
}
if ($message === '') {
  $errors[] = 'お問い合わせ内容を入力してください。';
}

表示時は必ずエスケープ

<?= htmlspecialchars($message, ENT_QUOTES, 'UTF-8') ?>

CSRFトークンの考え方

フォーム表示時にランダムな値をセッションへ保存し、送信時に一致するか確認します。これで外部サイトから勝手にPOSTされるリスクを下げられます。