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されるリスクを下げられます。