找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 11046|回复: 0

网站SQL注入攻击防护服务器配置搭建

[复制链接]

1

主题

0

回帖

5

积分

新手上路

积分
5
发表于 2026-8-13 01:20:11 | 显示全部楼层 |阅读模式
网站SQL注入攻击防护服务器配置指南

基础防护措施

1. 输入验证与过滤

  • 服务器端验证:在服务器端对所有用户输入进行严格验证
  • 白名单过滤:只允许特定格式的输入(如数字、特定字符集)
  • 转义特殊字符:对输入中的单引号、双引号、分号等特殊字符进行转义处理


2. 参数化查询/预处理语句

  • 使用参数化查询而非字符串拼接SQL语句
  • 示例(PHP PDO):

  1. $stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');
  2.   $stmt->execute(['email' => $input_email]);
复制代码

服务器配置防护

Web服务器配置

Apache配置
  1. # 启用mod_security(Web应用防火墙)
  2. LoadModule security2_module modules/mod_security2.so
  3. # 示例规则 - 阻止常见SQL注入模式
  4. <IfModule mod_security2.c>
  5.     SecRuleEngine On
  6.     SecRule ARGS "@rx (union.*select|concat.*\(|information_schema|sleep\(\d+\)|benchmark\(.+\,.+\))" \
  7.     "id:'1001',phase:2,t:none,block,msg:'Possible SQL Injection Attempt'"
  8. </IfModule>
复制代码

Nginx配置
  1. # 使用ngx_http_modsecurity_module(需编译时包含)
  2. # 或通过第三方模块如NAXSI实现类似功能
  3. # 示例:限制可疑请求
  4. location / {
  5.     # ...其他配置...
  6.     if ($query_string ~* "union.*select|concat.*\(|information_schema|sleep\(\d+\)") {
  7.         return 403;
  8.     }
  9. }
复制代码

数据库服务器配置

MySQL/MariaDB
  1. -- 限制数据库用户权限
  2. GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO 'user'@'host';
  3. -- 不要授予FILE、PROCESS、SUPER等危险权限
  4. -- 启用SQL模式限制
  5. SET GLOBAL sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
复制代码

PostgreSQL
  1. -- 限制用户权限
  2. REVOKE ALL ON SCHEMA public FROM PUBLIC;
  3. GRANT USAGE ON SCHEMA public TO web_user;
  4. -- 配置pg_hba.conf限制访问来源
复制代码

高级防护措施

1. Web应用防火墙(WAF)

  • 部署商业WAF如F5 ASM、Imperva或开源WAF如ModSecurity
  • 配置规则拦截常见SQL注入模式


2. 定期安全扫描

  • 使用工具如sqlmap定期测试网站是否存在SQL注入漏洞
  • 部署自动化漏洞扫描器


3. 错误处理配置

  • 禁用详细的数据库错误信息显示
  • 配置自定义错误页面


4. 最小化数据库暴露

  • 数据库不应直接暴露在公网
  • 使用VPN或SSH隧道访问数据库


监控与日志

  • 启用详细的数据库和Web服务器日志
  • 配置日志分析工具检测可疑模式
  • 设置实时警报机制


定期维护

  • 及时更新所有软件组件(Web服务器、数据库、应用框架)
  • 定期审查和更新安全规则
  • 进行渗透测试和安全审计


通过以上多层防护措施,可以显著降低网站遭受SQL注入攻击的风险。记住,安全是一个持续的过程,需要定期审查和更新防护措施。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|五云论坛 ( 黔ICP备2022001370号-1|贵公网安备52032102000798号 )

GMT+8, 2026-9-12 17:18 , Processed in 0.070808 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表