安全基础
- 输入验证和过滤是安全的基础。
- 使用预处理语句防止SQL注入。
- 实施适当的访问控制。
<?php
// 安全基础示例
// 1. 输入验证和过滤
function sanitize_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data, ENT_QUOTES, "UTF-8");
return $data;
}
// 2. 使用预处理语句
try {
$pdo = new PDO("mysql:host=localhost;dbname=test", "username", "password");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(":username", $username, PDO::PARAM_STR);
$stmt->execute();
} catch (PDOException $e) {
error_log("数据库错误: " . $e->getMessage());
}
// 3. 访问控制
function check_permission($user, $required_role) {
if (!isset($_SESSION["user_role"]) || $_SESSION["user_role"] !== $required_role) {
header("HTTP/1.1 403 Forbidden");
exit("Access Denied");
}
}
// 4. 密码安全
function hash_password($password) {
return password_hash($password, PASSWORD_BCRYPT, ["cost" => 12]);
}
function verify_password($password, $hash) {
return password_verify($password, $hash);
}
?>