前端之网络攻击
XSS跨站脚本攻击
攻击者向web页面插入可执行脚本代码,用户打开时就会执行并窃取存储在用户cookie中的敏感信息。
存储型XSS
存在提交的表单中。
攻击者将恶意代码通过正常的方式提交存入数据库,下次其他用户访问时就会执行这些代码。
- 成功的条件:提交、取数据、渲染时没有进行转义
- 防止:后端存数据时统一进行转义!后端传数据给前端时转义!渲染时转义!
反射型XSS
将恶意脚本代码加到URL地址请求参数里,用户点击恶意链接受到攻击。
- 成功的条件:用户点击!即时性(不用存储)
- 防止:
- 保证渲染的内容和数据来源为服务器
- 不要从DOM API(URL, document.referrer, document.forms)中获取数据渲染
- 不使用可执行字符串(eval, new Function(), document.write(), window.setInterval/setTimeout, innerHTML, document.createElement())
- 对DOM渲染方法传入的字符串参数做escape转义
总结:
1 过滤特殊字符
2 使用HTTP头指定类型
CSRF跨站请求伪造攻击
攻击者盗用身份信息进行模拟请求。
用户A已登录网站B,cookie有效期内,攻击者发送引诱网站C让用户A访问,获取用户的隐私信息,伪装成用户A向网站B发送请求。
预防:
- 正确使用get/post/cookie
- 渲染表单时,在表单里隐藏一个随机变化的Synchronizer Tokens(csrf_token),将这个token放在session中,表单提交时放到token里。
- hash 加密存在cookie中的 csrf_token
SQL注入攻击
向服务器提交恶意的SQL查询代码,程序在接收后错误的将攻击者的输入作为查询语句的一部分执行,从数据库获取敏感信息
预防:
- 权限限制
- 特殊字符转义
- SQL注入检测工具
- 匹配和限制输入
DDOS分布式拒绝服务攻击
预防:攻击检测和异常流量清洗