Web表单是用户数据输入的主要入口,也是攻击者最常利用的攻击点。PHP作为最流行的服务器端语言之一,表单安全防护尤为重要。
// 使用filter_var函数验证邮箱
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
// 过滤HTML标签
$content = htmlspecialchars($_POST['content'], ENT_QUOTES);
// 使用预处理语句
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');
$stmt->execute(['email' => $email]);
对所有输出到HTML的内容进行转义:
echo htmlentities($user_input, ENT_QUOTES, 'UTF-8');
// 生成CSRF令牌
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
// 表单中包含令牌
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
// 验证令牌
if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) {
die('CSRF验证失败');
}