php服务器安全详细说明以及案例
PHP服务器安全详细说明
更新PHP版本
及时更新PHP到最新稳定版本,修复已知安全漏洞。
禁用危险函数
在
php.ini
中禁用eval()
、exec()
、system()
等危险函数。配置
open_basedir
限制PHP脚本访问的文件系统路径,防止目录遍历攻击。
设置
disable_functions
禁用不必要的PHP函数,减少潜在攻击面。
错误报告
生产环境中关闭错误显示,避免泄露敏感信息。
使用
error_reporting(0)
和display_errors = Off
。文件上传安全
限制上传文件类型和大小,确保文件存储目录不可执行。
使用
$_FILES['file']['type']
和$_FILES['file']['size']
验证文件。SQL注入防护
使用预处理语句(PDO或MySQLi)防止SQL注入。
示例:
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
XSS防护
输出数据时使用
htmlspecialchars()
或htmlentities()
转义特殊字符。会话安全
使用
session_regenerate_id()
防止会话固定攻击。设置
session.cookie_httponly = 1
和session.cookie_secure = 1
。CSRF防护
使用CSRF令牌验证表单提交。
示例:
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
文件权限
确保Web服务器用户对文件有最小必要权限。
示例:
chown www-data:www-data /var/www/html
日志监控
启用PHP错误日志和Web服务器日志,定期检查异常活动。
案例
SQL注入攻击案例
// 不安全代码 $username = $_POST['username']; $password = $_POST['password']; $sql = "SELECT * FROM users WHERE username='$username' AND password='$password'"; $result = $conn->query($sql); // 安全代码 $username = $_POST['username']; $password = $_POST['password']; $stmt = $conn->prepare("SELECT * FROM users WHERE username=? AND password=?"); $stmt->bind_param("ss", $username, $password); $stmt->execute(); $result = $stmt->get_result();
XSS攻击案例
// 不安全代码 echo $_GET['name']; // 安全代码 echo htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8');
文件上传漏洞案例
// 不安全代码 $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["file"]["name"]); move_uploaded_file($_FILES["file"]["tmp_name"], $target_file); // 安全代码 $allowed_types = ['image/jpeg', 'image/png']; $max_size = 2 * 1024 * 1024; // 2MB if (in_array($_FILES["file"]["type"], $allowed_types) && $_FILES["file"]["size"] <= $max_size) { $target_dir = "uploads/"; $target_file = $target_dir . uniqid() . '.' . pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION); move_uploaded_file($_FILES["file"]["tmp_name"], $target_file); } else { echo "Invalid file type or size."; }
本篇文章内容来源于:php服务器安全详细说明以及案例
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。