总结常见的web安全漏洞(产生原因 ,原理 ,危害 ,防御措施)
字数 6159 2025-09-01 11:26:17
Web安全漏洞全面解析与防御指南
SQL注入漏洞
产生原因
- 应用程序将用户输入(如表单字段、URL参数、Cookie)未经充分验证或转义,直接拼接到SQL查询语句中
- 开发者过度信任用户输入
漏洞原理
攻击者构造包含恶意SQL代码的特殊输入(payload),当恶意输入被拼接到SQL语句中并发送到数据库中执行时,可以修改原始查询逻辑,执行非预期的SQL操作(查询、修改、删除数据,甚至执行数据库管理命令)。
漏洞危害
- 数据泄露:窃取敏感信息(用户凭证、个人信息、商业机密)
- 数据篡改:修改、删除数据库内容(如篡改价格、删除用户等)
- 权限提升:利用数据库特性执行系统命令,获取服务器控制权
- 拒绝服务:执行消耗大量资源的查询导致数据库瘫痪
防御措施
- 参数化查询:使用数据库驱动提供的参数化接口,将SQL语句结构与数据分离
- 输入验证与过滤:对用户输入进行严格的类型、格式、长度检查(白名单优于黑名单)
- 最小权限原则:数据库连接账户使用最低必要权限(避免使用root、sa)
- ORM框架:使用成熟的ORM(如Hibernate、Entity Framework)自动处理参数化
- 转义:在特定情况下(如无法参数化时)对特殊字符进行转义
- Web应用防火墙:部署WAF检测和拦截常见的SQL注入攻击模式
RCE远程代码执行漏洞
产生原因
- 应用程序将用户可控的输入直接或间接传递给能执行系统命令、代码解释或反序列化的危险函数/接口
- 存在允许上传和执行恶意文件(如webshell)的漏洞,常与文件上传漏洞结合
- 依赖存在已知RCE漏洞的第三方组件(库、框架、服务器软件)
漏洞原理
攻击者构造特殊的输入(精心设计的命令参数、序列化数据、恶意脚本文件),当应用程序处理这些输入时,调用了系统命令执行函数(如system()、exec())或代码执行函数(如eval()),导致攻击者的任意代码在服务器操作系统层面被执行。
漏洞危害
- 完全控制服务器:获取操作系统最高权限(root/Administrator)
- 数据窃取与破坏:读取、修改、删除服务器上所有文件
- 植入后门或挖矿木马:长期控制或利用服务器资源
- 内网渗透跳板:攻击内部网络其他系统
防御措施
- 避免使用危险函数,除非绝对必要且安全可控:
- 命令执行函数:system()、exec()、shell_exec()
- 代码执行函数:eval()、assert()、call_user_function()
- 严格输入验证与过滤:对传入的命令、代码、序列化数据的参数进行严格检查
- 最小权限原则:web服务器进程以低权限用户运行
- 文件上传安全:严格控制文件上传(类型、内容、存储位置、执行权限)
XSS跨站脚本攻击
产生原因
- 存储型、反射型:应用程序将用户提交的数据未经验证或转义直接输出到HTML页面中
- DOM型:客户端JS不安全的操作DOM,将URL参数等不可信数据当作HTML/JS代码插入到页面
漏洞原理
攻击者构造包含恶意JS代码的输入,当其他用户访问包含此恶意代码的页面时,浏览器会将该代码当作页面的一部分执行。恶意脚本在受害用户的浏览器上下文中运行,可以窃取其cookie、会话token、修改页面内容、发起恶意请求、重定向到钓鱼网站等。
漏洞危害
- 会话劫持:窃取用户的会话cookie,冒充用户登录
- 钓鱼攻击:伪造登录框窃取凭证
- 敏感信息窃取:窃取页面内容、表单数据、本地存储
- 键盘记录:记录用户输入
- 网站挂马/挖矿
防御措施
- 对输出进行编码或转义:根据输出位置(HTML正文、HTML属性、JavaScript、CSS、URL),使用对应的编码函数(HtmlEncode、JavaScriptEncode、UrlEncode)
- 对输入进行验证:对用户输入进行严格检查(类型、长度、格式等),但不能替代输出编码
- HttpOnly Cookie:标记敏感cookie为httponly,防止JS访问
- 内容安全策略(CSP):通过HTTP头定义允许加载脚本、样式等资源的来源
- 使用安全框架:现代框架(React、Vue、Angular)通常有内置的XSS防护机制
CSRF跨站请求伪造
产生原因
当用户登录一个网站后,网站会认为来自该用户浏览器的请求都是经过用户授权的合法操作。攻击者可以利用用户对网站的信任,诱导用户访问恶意网站或执行恶意操作。
漏洞原理
- 用户登录目标网站A,浏览器保存了会话cookie
- 用户访问了恶意网站B
- 网站B的页面中包含一个自动提交的表单或/