易君召
发布于 2026-08-26 / 作者:易君召 / 2 阅读
0

如何提升 Web 服务安全性

Web 安全防护从网络层、Web 服务层、应用代码层、数据层、运维管理、身份权限、安全监测多维度落地,覆盖 OWASP Top10 常见风险,下面整理可直接落地的措施。

一、网络与基础设施层

  1. 最小端口暴露 只对外开放业务必需端口,关闭无用端口;使用防火墙、安全组限制源 IP 访问,管理后台、数据库不直接对公网开放。

  2. 启用 HTTPS,禁用 HTTP

  • 部署 TLS 证书,强制 301 跳转 HTTP→HTTPS;

  • 配置强 TLS 套件,禁用 TLS1.0/1.1,开启 HSTS 防止降级攻击;

  • 安全响应头:Strict‑Transport‑SecurityX‑Content‑Type‑Options: nosniffX‑Frame‑Options:DENYContent‑Security‑Policy(CSP),防御点击劫持、MIME 嗅探、XSS。

  1. WAF Web 应用防火墙 前置 WAF(云 WAF/ModSecurity/Nginx‑WAF),拦截 SQL 注入、XSS、命令注入、恶意请求、扫描器攻击。

  2. 负载均衡 & 反向代理隔离 业务后端服务器不直接暴露公网,全部经过 Nginx / 网关,做请求过滤、限流、防 CC。

二、Web 服务器(Nginx/Apache)安全配置

  1. 关闭版本号泄露,不返回 Nginx/Apache、后端框架版本信息,避免攻击者利用版本漏洞。

  2. 禁止目录浏览,关闭 autoindex;限制文件访问路径,路径穿越防护。

  3. 文件上传目录禁止执行脚本,上传文件夹取消 php/java 脚本执行权限。

  4. 请求限制:限制单请求 body 大小、URI 长度,连接数限流,防大请求 DoS。

  5. 删除默认页面、示例文件、测试接口。

三、身份认证与权限控制

  1. 密码策略 强制复杂度密码,禁止弱密码;开启密码过期;禁止明文存储密码,使用 bcrypt、Argon2 做密码哈希,严禁 MD5/SHA1

  2. 会话 Session 安全

  • Cookie 设置 HttpOnlySecureSameSite=Strict/Lax,防止 XSS 窃取 Cookie、CSRF 攻击;

  • Session ID 足够随机,登录成功重置 sessionId;

  • 设置合理会话超时;异地登录踢出旧会话。

  1. CSRF 防护 关键操作接口使用 CSRF Token;配合 SameSite Cookie。

  2. 权限最小化原则 RBAC 权限模型;垂直权限(普通用户不能访问管理员接口)、水平权限(用户不能越权查看他人数据),每一次接口请求都校验权限,不能只靠前端控制

  3. 多因素认证 MFA 后台管理系统开启二次验证码。

  4. 接口防暴力破解:登录接口增加验证码、登录失败次数锁定 IP / 账号。

四、代码层:防御 OWASP Top10 核心漏洞

1. SQL 注入

  • 优先使用预编译 ORM、参数化查询,禁止字符串拼接 SQL

  • 避免动态拼接表名、字段名;必要时做白名单校验。

2. XSS 跨站脚本

  • 输出到 HTML 页面做 HTML 转义;输出 JS 做 JS 转义;

  • 使用 CSP 内容安全策略,禁止内联脚本、禁止 eval;

  • 用户输入不直接渲染到页面。

3. 命令注入

严禁直接把用户输入传给系统命令;必须调用命令,严格白名单过滤参数,不要拼接 shell 字符串。

4. 文件上传漏洞

  • 校验文件文件头、真实文件类型,不只看后缀名

  • 重命名上传文件名,存储路径随机,不使用用户原始文件名;

  • 上传目录禁止脚本执行,存储不在 web 可访问路径;

  • 限制文件大小。

5. SSRF 服务端请求伪造

后端发起 http 请求,禁止访问内网地址、回环地址;配置内网黑名单,限制协议只允许 http/https。

6. 不安全反序列化

不要反序列化不受信的用户输入;避免使用危险序列化类。

7. 信息泄露

  • 生产环境关闭 debug 模式,关闭详细异常堆栈输出给前端;

  • 错误页面不要泄露数据库路径、代码路径、接口详情。

8. API 接口安全

  1. 接口鉴权:JWT / Token;JWT 设置短过期时间,支持吊销;不要把敏感信息放在 JWT 载荷。

  2. 接口速率限制 (RateLimit),防爬虫、爆破、DoS。

  3. 敏感接口增加签名校验。

五、数据安全

  1. 传输加密:全部 HTTPS;数据库连接开启 TLS 加密

  2. 存储加密:手机号、身份证等敏感数据加密存储,不要明文;

  3. 数据库账号最小权限,业务账号不允许 drop/alter 等高权限;禁止 root 账号执行业务。

  4. 备份加密,备份文件妥善保管。

六、运维与开发流程安全

  1. 依赖组件安全 定期扫描第三方库漏洞:OWASP dependency‑check、Maven/Gradle 依赖扫描;升级存在 CVE 漏洞的 jar/npm 包;不使用废弃组件。

  2. 系统补丁:服务器操作系统、中间件及时打安全补丁。

  3. 安全开发流程:

  • 代码安全审计;代码扫描 SAST;上线前 DAST 动态扫描;

  • 禁止硬编码密钥、密码,密钥放到配置中心、环境变量,不要提交到 git 仓库。

  1. 密钥管理:AK/SK、数据库密码不要写代码;使用密钥管理服务。

  2. 日志审计:记录登录、关键操作日志;日志不记录密码、明文敏感信息;日志留存。

七、安全监测与应急

  1. 定期漏洞扫描、渗透测试。

  2. 入侵检测 IDS,监控异常访问、爆破行为。

  3. 做好安全应急预案,漏洞出现时快速降级、修复。

  4. 定期安全演练。

八、常见错误(避坑)

  1. ❌只靠前端校验安全,后端不做校验

  2. ❌密码明文存储,简单哈希

  3. ❌关闭 WAF,认为 “内网就安全”

  4. ❌依赖浏览器安全,不配置安全响应头

  5. ❌上传文件只校验后缀

  6. ❌接口权限只在页面做控制,后端接口无权限校验

简单优先级落地清单(快速整改)

  1. 全站 HTTPS + 全套安全响应头

  2. WAF 上线,拦截常见攻击

  3. 修复注入、XSS、越权、文件上传高危漏洞

  4. Cookie 安全属性,会话加固,登录防爆破

  5. 密码哈希存储,最小权限

  6. 关闭 Debug,屏蔽版本泄露

  7. 依赖包漏洞扫描


本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。

原文链接 https://www.yijunzhao.cn/archives/improve-web-service-security-guide

欢迎访问 小易撩挨踢

https://www.yijunzhao.cn/