【HW系列】—web常规漏洞(SQL注入与XSS)
SQL注入与XSS攻防解析(安全防御指南)
一、SQL注入基础(防御视角)
1. 简介
SQL注入是一种通过构造非预期SQL语句操纵数据库的攻击技术。作为开发者,需重点关注输入验证与查询安全,建立全流量监测机制,识别异常参数变形。
2. 原理剖析
当应用程序未对用户输入充分验证时,攻击者可通过拼接额外SQL指令绕过验证或窃取数据。
防御重点:
监控SQL日志中的非常规语法
使用预编译语句隔离代码与数据
3. 危害等级
高风险:数据泄露、权限绕过、文件系统操作
防御优先级:需在开发阶段嵌入安全机制
4. 分类与防护
二、SQL注入防御关键技术
输入验证规则
数字字段:正则匹配1+$
字符串字段:过滤’";<>等特殊符号
白名单机制:用户名仅允许字母数字(2+$)
数据库防火墙配置
拦截特征:UNION SELECT、SLEEP()、BENCHMARK()
权限控制:应用账号禁用FILE/EXECUTE权限
盲注类型与防御对比
一、XSS漏洞核心防御
XSS基础
跨站脚本攻击简称XSS,是指恶意攻击者往Web页面里插入恶意代码,当受害者的浏览器加载网站时代码就会执行。跨站点脚本是一种客户端代码注入攻击。
成因
由于服务器对输入和输出没有做严格的验证,导致攻击者构造的字符输出到前端时被浏览器执行,当作有效代码解析执行从而产生危害。
危害
- 钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者注入钓鱼 JavaScript 以监控目标网站的表单输入,甚至发起基于 DHTML 更高级的钓鱼攻击方式。
- 网站挂马:跨站时利用 IFrame 嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。
- 身份盗用:Cookie 是用户对于特定网站的身份验证标志,XSS 可以盗取到用户的 Cookie,从而利用该 Cookie 盗取用户对该网站的操作权限。如果一个网站管理员用户 Cookie 被窃取,将会对网站引发巨大的危害。
- 盗取网站用户信息:当能够窃取到用户 Cookie 从而获取到用户身份使,攻击者可以获取到用户对网站的操作权限,从而查看用户隐私信息。
- 垃圾信息发送:比如在 SNS 社区中,利用 XSS 漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。
- 劫持用户 Web 行为:一些高级的 XSS 攻击甚至可以劫持用户的 Web 行为,监视用户的浏览历史,发送与接收的数据等等。
- XSS 蠕虫:XSS 蠕虫可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施 DDoS 攻击等。
分类
(1) 反射型
反射型XSS,又称非持久型XSS,攻击相对于受害者而言是一次性的 具体表现在受害者点击了含有的恶意JavaScript脚本的url,恶意代码并没有保存在目标网站,而Web应用程序只是不加处理的把该恶意脚本“反射”回受害者的浏览器而使受害者的浏览器执行相应的脚本。
(2) 存储型
存储型XSS是指应用程序通过Web请求获取不可信赖的数据,在未检验数据是否存在XSS代码的情况下,便将其存入数据库 当下一次从数据库中获取该数据时程序也未对其进行过滤,页面再次执行XSS代码持续攻击用户。 存储型XSS漏洞大多出现在留言板、评论区,用户提交了包含XSS代码的留言到数据库,当目标用户查询留言时,那些留言的内容会从服务器解析之后加载出来。
(3) DOM型
不与后台服务器交互数据,也属于反射型的一种,一种通过dom操作前端输出的时候产生问题。DOM,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式,DOM-XSS简单理解就是不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题。
跨站脚本攻击漏洞修复
- 输入过滤。对用户提交的数据进行有效性验证,仅接受指定长度范围内并符合我们期望格式的的内容提交,阻止或者忽略除此外的其他任何数据。
- 输出转义。在变量输出到 HTML 页面时,可以使用编码或转义的方式来防御 XSS 攻击。htmlspecialchars() :把预定义的字符转换为 HTML 实体。
- 使用 HttpOnly 。 HttpOnly 是加在 cookies 上的一个标识,用于告诉浏览器不要向客户端脚本暴露 cookie 。当你在 cookie 上设置 HttpOnly 标识后,浏览器就会知会到这是特殊的 cookie ,只能由服务器检索到,所有来自客户端脚本的访问都会被禁止。
- 配合 CSP 。 CSP (Content Security Policy)指的是内容安全策略,为了缓解很大一部分潜在的跨站脚本问题,浏览器的扩展程序系统引入了内容安全策略。 CSP 本质上是建立白名单,规定了浏览器只能够执行特定来源的代码,即使存在跨站脚本攻击漏洞,也不会加载来源不明的第三方脚本。
企业级防御实践
开发流程管控
安全编码规范:SDL流程嵌入需求评审
自动化扫描:SonarQube检测未转义输出
纵深防御体系
前端:CSP+输入过滤
后端:参数化查询+WAF规则(如拦截