本文结合《大型网站技术架构:核心原理与案例分析》、主流安全实践与个人开发经验,系统整理大型网站安全架构基础知识
一、安全问题
“安全第一”、“安全无小事”。围绕着安全问题,在各行各业都有对各类常见安全问题的解决方案和突发安全问题的应急预案。在互联网、软件开发领域,我们日常工作中对各类常见的安全问题有哪些常见的解决方案呢?
二、基础安全理念
- 最小权限原则
只授予用户或系统最小操作权限,减少潜在风险面。 - 默认拒绝原则
默认拒绝一切请求,只有明确授权的操作才允许执行。 - 分层防御
架构中每一层都应具备自己的安全防护能力(如网页、防火墙、API网关、后端服务)。 - 可审计,记录可追踪
运维后台操作日志记录,每次导出均有操作用户和时间。
三、网站应用攻击类型和防御手段
1. 攻击类型:SQL注入(SQL Injection)
描述:利用不安全的SQL语句(如拼接字符串)将恶意代码注入后台数据库,实现数据窃取、篡改或破坏。
防御手段:
- 使用参数化查询或ORM框架,避免直接拼接SQL语句。
- 对用户输入进行严格校验和过滤(如长度、特殊字符等)。
- 限制数据库用户权限,敏感操作采用最小权限原则。
2. 攻击类型:跨站脚本(XSS,Cross-Site Scripting)
描述:攻击者将恶意脚本注入页面,在用户浏览时执行,窃取信息或进行操作。
防御手段:
- 对用户输入严格进行HTML/JavaScript编码和过滤,防止脚本执行。
- 输出内容前做内容转义,如使用模板引擎的安全输出功能。
- 对cookie设置HttpOnly和安全标志位,减少脚本访问cookie的风险。
3. 攻击类型:跨站请求伪造(CSRF,Cross-Site Request Forgery)
描述:诱导已登录用户访问恶意网站,自动向目标网站发起请求,执行用户未授权操作。
防御手段:
- 在每次请求或表单中加入CSRF Token进行校验。
- 对敏感操作使用POST方法,并校验Referer来源。
- 对登录态采用双重身份验证(例如验证码、短信验证码)。
4. 攻击类型:文件上传漏洞
描述:利用网站上传功能,将恶意文件(如WebShell)上传至服务器,执行恶意操作。
防御手段:
- 限制可上传文件类型及大小,并校验文件内容。
- 将上传文件保存至不可执行目录,禁止脚本文件上传。
- 随机化文件名,避免覆盖或预测。
5. 攻击类型:远程代码执行(RCE)
描述:攻击者利用漏洞执行系统命令或代码,危及服务器安全。
防御手段:
- 禁止动态执行外部输入的代码,如禁用eval、system等函数。
- 对所有参数做严格校验和过滤。
- 采用最小化授权,限制Web服务进程权限。
6. 攻击类型:目录遍历(Directory Traversal)
描述:构造特殊路径访问服务器未公开敏感文件。 防御手段:
- 对用户输入路径进行规范化和过滤,避免“..”等目录穿越符号出现。
- 限制Web服务器的访问根目录,设置文件访问白名单。
7. 攻击类型:弱口令/暴力破解(Brute Force)
描述:攻击者通过自动化工具不断尝试密码,获得非法访问权限。
防御手段:
- 强制用户使用高强度密码,定期更换密码。
- 登录接口限流或锁定机制(如N次失败后锁定账号/验证码验证)。
- 引入双因素验证(如短信验证码)。
8. 攻击类型:会话劫持(Session Hijacking)
描述:窃取或伪造用户会话标识,冒充用户登录系统。
防御手段:
- 会话标识(如Token、Cookie)应设置HttpOnly、Secure等属性。
- 使用HTTPS加密所有传输数据。
- Session绑定客户端信息(如IP、UA),发现异常时强制登录失效。
四、网站分层防御架构是什么?
1. 接入层
安全措施
- DDoS防护:通过云厂商DDoS高防、流量清洗/调度,过滤大规模恶意流量请求,防止网站被流量打瘫。
常见产品:阿里云高防IP、腾讯云DDoS防护。 - WAF (Web应用防火墙) :识别和拦截SQL注入、XSS、文件上传等Web层攻击。
常见产品:阿里云WAF、Cloudflare WAF等。 - 黑白名单:将特定IP加入黑名单禁止访问,白名单开放给内网或特定业务方。
- HTTPS/SSL:所有流量加密传输,防止中间人窃听或篡改。
实现措施:SSL证书部署,强制跳转HTTPS协议。
2. 网关层(API Gateway)
安全措施
- API路由:统一入口,根据不同路径、参数转发到对应微服务。
实现:Nginx、Kong、Spring Cloud Gateway等。 - 限流:限制单IP、账号、接口的QPS,防止恶意刷接口。
常用技术:Redis令牌桶/漏桶算法。 - 鉴权/鉴权码:校验用户Token、session、签名等,未授权拒绝访问。
实现:JWT/Session校验、API Key机制。 - 业务逻辑处理:实现灰度发布、AB测试,或者动态熔断、降级等网关能力。
3. 应用服务层
安全措施
- 权限鉴定:基于用户身份和角色(RBAC/ABAC)控制业务功能权限。
实现:Spring Security、Shiro、自定义鉴权。 - 参数校验:严格校验接口接收的数据,防止注入、越权等安全隐患。
实现:JSR303校验框架、前后端数据白名单。 - MFA(多因素认证) :重要操作(如管理员后台、资金转账)需密码+短信/硬件Key/APP验证码。
实现:Google Authenticator、短信网关、U盾等二次验证。
4. 数据层(数据库/持久化)
安全措施
- SQL注入防护:使用ORM框架、预编译语句,参数绑定,避免动态拼接SQL。
实现:MyBatis、Hibernate、JDBC PreparedStatement。 - 字段加密:手机号、身份证等敏感数据AES/RSA/SM4等算法加密存储。
实现:Jasypt、云KMS等密钥管理系统。 - 日志留痕:数据增删改等操作自动记录审计日志,为安全合规做支撑。
5. 运维及监控层
安全措施
- 日志告警:实时采集系统、业务日志并设置规则,发生异常及时预警通知。
实现:ELK Stack、Prometheus + Alertmanager、阿里云日志服务等。 - 堡垒机:所有生产环境操作需要通过堡垒机统一入口,操作过程可记录、溯源、回放。
实现:阿里云堡垒机、深信服等。
五、小结
- 安全架构设计先行 ,不要等到产品上线再补漏洞。
- 这个世界没有绝对的安全,正如没有绝对的自由一样。网站的相对安全是通过提高攻击门槛达到的,让攻击者不得不权衡代价、得失。