输入验证(Input Validation)
1. 验证输入数据的类型和格式:
filter_var函数来验证电子邮件地址、URL和IP地址等类型的输入。if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
// 邮箱地址输入正确
} else {
// 邮箱地址输入错误
}
2. 过滤输入数据中的危险字符:
mysqli_real_escape_string或htmlspecialchars来转义输入数据。防止跨站脚本攻击(Cross-Site Scripting,XSS)
1. 对输出数据进行HTML编码:
htmlspecialchars来实现。2. 设置Cookie属性为HttpOnly:
HttpOnly可以防止通过JavaScript读取Cookie的值,有效地保护用户的敏感信息。防止SQL注入(SQL Injection)
1. 使用预处理语句(Prepared Statement):
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();
2. 限制数据库用户的权限:
保护会话(Session)
1. 验证会话的来源:
标题内容
if ($_SESSION['ip_address'] !== $_SERVER['REMOTE_ADDR'] || $_SESSION['user_agent'] !== $_SERVER['HTTP_USER_AGENT']) {
// 会话来源非法
session_destroy();
}
标题内容
2. 设置会话超时时间:
session_set_cookie_params(3600);
session_start();