文章目录
常见Web攻击简介
1 安全三要素
- 机密性:要求保护数据内容不能泄露,加密是实现机密性要求的常见手段
- 完整性:要求保护数据内容是完整的、没有被篡改的,数字签名是常见手段
- 可用性:要求保护资源是随需而得
2 安全方案
- Secure by Default:设置白名单、黑名单
- 最小权限原则:只授予主体必要的权限,不过度授权
- 纵深防御原则:在不同层次不同方面实施安全方案,相互配合构成一个整体;在解决根本问题的地方实施针对性方案
- 数据与代码分离原则
- 不可预测性原则:可预测的数据规律容易被黑客探测得知
3 浏览器安全策略
挂马是指在网页中插入一段恶意代码,利用浏览器漏洞执行任意代码的攻击方式
- 同源策略:限制来自不同源的“document”或脚本,对当前“document”读取或设置某些属性
- 浏览器沙箱:渲染引擎由沙箱隔离,与其他引擎通信的时候会进行安全检查
- 恶意网站拦截:利用黑名单拦截恶意网站
4 跨站脚本攻击(XSS)
通常指黑客通过HTML注入篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器
- 反射型XSS(非持久型):简单地把用户输入的数据反射给浏览器,需要诱使用户点击一个恶意链接
- 存储型XSS(持久型):把用户输入的数据存储在服务器端,具有强稳定性
- DOM Based XSS:通过修改页面DOM节点形成的XSS
防御措施
- HttpOnly:浏览器禁止页面的js访问带有HttpOnly属性的Cookie。为了防御XSS攻击后的Cookie劫持攻击,如果Cookie带有HttpOnly属性,则js无法获取
- 输入检查:常见的Web漏洞都要求攻击者构造一些特殊字符,可能是正常用户用不到的。输入检查的逻辑必须放在服务器端代码中实现
- 输出检查:在变量输出到HTML页面时,可以使用编码或转义的方式防御
- 富文本检查:在标签选择上,使用白名单,而不是黑名单,只允许<a>、<img>、<div>等比较安全的标签存在。白名单原则同样适用于属性和事件的选择
5 跨站点请求伪造(CSRF)
通常指攻击者伪造了一个请求,以用户的身份在该站点发起攻击
防御措施
- 验证码:CSRF攻击通常在用户不知情情况下构造网络请求,通过验证码强制用户交互
- Referer Check:防止图片盗链,检查请求必须来自合法的源
- Anti CSRF Token:CSRF攻击能成功通常源于攻击者猜到URL的规律,通过在URL上增加一个足够随机的token,防止攻击者猜测到。该token由用户与服务器共同持有
6 点击劫持(Click Jacking)
攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,诱使用户在该网页上进行操作,使用户在不知情的情况下点击透明的iframe页面
防御措施
- frame busting:写一段js代码,禁止iframe的嵌套
- X-Frame-Options:部分浏览器支持,浏览器会拒绝当前页面加载任何frame页面或只能加载同源域名下的页面
7 SQL注入
注入攻击的本质是把用户输入的数据当作代码执行,有两个关键条件,第一个是用户能够控制输入,第二个是原本程序要执行的代码拼接了用户的输入
盲注:在服务器没有错误回显时完成注入攻击,通过构造简单的条件语句,根据返回页面是否变化判断
Time Attack:利用BENCHMARK函数,通过结果返回时间判断注入语句是否成功
防御措施
- 使用预编译语句:使用预编译语句,绑定变量,SQL语句的语义不会发生改变
- 使用存储过程:存储过程需要先讲SQL语句定义在数据库中
- 检查数据类型
- 使用安全函数
8 分布式拒绝服务(DDOS)
DDOS是利用合理的请求造成资源过载,导致服务不可用
DDOS将正常请求放大了若干倍,通过若干个网络节点同时发起攻击,以达成规模效应。这些节点往往是黑客们所控制的肉鸡,数量达到一定规模后,就形成了一个僵尸网络
8.1 CC攻击
CC攻击是应用层的DDOS
攻击原理是对一些消耗资源较大的页面不断发起正常的请求,以达到消耗服务端资源的目的
防御措施
- 针对每个客户端做一个请求频率的限制,但攻击者可以使用代理IP
- 应用代码做好优化,合理地使用memcache
- 网络架构做好优化,善于利用负载均衡分流
- 使用验证码