导航菜单

安全与性能优化

安全基础

  • 输入验证和过滤是安全的基础。
  • 使用预处理语句防止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);
}
?>