应用层漏洞实战防护:SQL 注入、XSS、文件上传漏洞一站式加固方案
SQL 注入防护使用参数化查询或预编译语句替代字符串拼接。例如在Java中采用PreparedStatementPHP中使用PDO绑定参数String sql SELECT * FROM users WHERE username ?; PreparedStatement stmt connection.prepareStatement(sql); stmt.setString(1, userInput);ORM框架如Hibernate、MyBatis等内置防注入机制。避免直接拼接SQL语句特殊字符需转义处理如MySQL的mysql_real_escape_string()。最小权限原则配置数据库账户权限禁止应用使用root账户。启用WAF规则过滤常见注入特征如UNION SELECT、--等注释符。XSS跨站脚本防护输出数据时进行HTML实体编码例如将转为lt;。前端框架如React/Vue默认提供XSS防护避免使用v-html或dangerouslySetInnerHTML。设置HTTP头Content-Security-Policy限制脚本来源Content-Security-Policy: default-src self; script-src self https://trusted.cdn.com表单提交启用验证码防止自动化攻击Cookie标记HttpOnly和Secure属性。富文本场景使用白名单过滤标签如DOMPurify库。文件上传漏洞防护限制上传文件扩展名至业务必需类型如仅允许.jpg,.png。服务端校验文件头魔数而非扩展名防止伪装攻击。存储文件时重命名随机化避免用户控制文件名。禁用上传目录的脚本执行权限Nginx配置示例location ^~ /uploads/ { deny all; }扫描上传文件内容是否包含恶意代码病毒文件需隔离处理。云存储服务可启用对象版本控制与访问日志审计。综合防护措施定期更新应用框架与组件修复已知漏洞。敏感操作记录详细日志包括IP、时间戳和操作内容。关键业务接口添加速率限制防止暴力破解。生产环境关闭错误调试信息避免泄露系统路径等敏感数据。安全测试应覆盖DAST动态扫描与SAST代码审计渗透测试模拟攻击验证防护有效性。建立应急响应流程漏洞确认后72小时内完成修复。