PHP 安全攻防:防 SQL 注入、XSS、CSRF 的终极方案
一、SQL 注入:最常见的攻击方式
1. 攻击原理
攻击者通过构造恶意 SQL 语句,篡改数据库操作,例如:
2. 解决方案:预处理语句
无论使用 mysqli 还是 PDO,都必须用预处理语句绑定参数:
二、XSS 攻击:跨站脚本攻击
1. 攻击原理
攻击者在输入框中输入<script>alert('窃取cookie')</script>,若后端未过滤,前端渲染时会执行该脚本,窃取用户 Cookie、伪造操作等。
2. 解决方案
方案 1:输出时过滤
方案 2:配置 CSP 头部
在 Nginx 或 PHP 中添加 CSP(内容安全策略),限制脚本执行:
CSP 规则:仅允许加载本站资源,脚本仅允许本站和指定 CDN,禁止内联脚本。
三、CSRF 攻击:跨站请求伪造
1. 攻击原理
攻击者诱导用户点击恶意链接,利用用户已登录的身份,伪造请求执行操作(如转账、改密码)。
2. 解决方案:CSRF Token 验证
四、其他安全防护措施
1. 密码加密:使用 password_hash ()
禁止使用 md5 ($password . $salt),安全性低;password_hash () 会自动更新加密算法,更安全。