```html
Web安全防护: CSRF、XSS、SQL注入攻防实践
Web安全防护:CSRF、XSS、SQL注入攻防实践
Web安全威胁全景解析
根据OWASP 2023年发布的最新报告,跨站请求伪造(CSRF)、跨站脚本攻击(XSS)和SQL注入(SQL Injection)仍然占据Web应用安全威胁前三名。这些攻击每年导致全球超过120亿美元的经济损失,其中CSRF攻击成功率达37%,XSS漏洞存在于65%的Web应用中...
CSRF攻击防御实践
CSRF攻击原理与典型案例
跨站请求伪造(Cross-Site Request Forgery)通过诱导用户访问恶意页面,冒用身份执行非授权操作。例如银行转账场景:
<!-- 恶意页面示例 -->
<img src="https://bank.com/transfer?to=hacker&amount=10000">
双重防御机制实现方案
基于OWASP建议的同步令牌模式:
// Node.js实现CSRF Token验证
app.use(csurf());
app.post('/transfer', (req, res) => {
if (!req.csrfToken().verify(req.body._csrf)) {
return res.status(403).send('Invalid CSRF Token');
}
// 执行转账逻辑
});
同时设置SameSite Cookie属性:
Set-Cookie: sessionId=abc123; SameSite=Strict; HttpOnly
XSS漏洞深度防护
XSS攻击类型细分
- 存储型XSS(Stored XSS):恶意脚本持久化存储于服务端
- 反射型XSS(Reflected XSS):通过URL参数即时注入
- DOM型XSS(DOM-based XSS):客户端脚本解析漏洞
内容安全策略(CSP)配置实例
Content-Security-Policy:
default-src 'self';
script-src 'self' https://trusted.cdn.com;
style-src 'self' 'unsafe-inline';
img-src *;
配合输入过滤和输出编码:
// Java HTML实体编码
String safeOutput = HtmlUtils.htmlEscape(userInput);
SQL注入全链路防御
预编译语句实现原理
-- 易受攻击的传统查询
SELECT * FROM users WHERE username = '$user_input';
-- 参数化查询示例(Python)
cursor.execute(
"SELECT * FROM users WHERE username = %s",
(user_input,))
ORM框架最佳实践
// TypeORM安全查询示例
const user = await UserRepository.findOne({
where: { username: userInput },
cache: true
});
结合正则表达式白名单验证:
// 用户名合法性校验
const isValid = /^[a-zA-Z0-9_]{4,20}$/.test(username);
企业级安全防护架构
构建纵深防御体系需要整合:
- Web应用防火墙(WAF)规则配置
- 实时入侵检测系统(IDS)部署
- 自动化安全扫描工具集成
根据NIST SP 800-115标准,采用PDCA(Plan-Do-Check-Act)模型持续改进安全策略...
Web安全, CSRF防护, XSS防御, SQL注入防护, OWASP标准
```