1.XSS攻击
跨站脚本攻击
主要是通过html标签注入,篡改网页,插入恶意的脚本,
前端可能没有经过严格的校验直接就进到数据库,
数据库又通过前端程序又回显到浏览器
会导致用户cookie信息泄露
- 输入框嵌入
<script>
脚本 - URL 嵌入
<script>
脚本 - img 嵌入
<script>
脚本 - $.append方法嵌入
<script>
脚本
1.1 类型:
将跨站脚本攻击分为下面两类:
- 反射型:恶意代码并没有保存在目标网站 = 》 是通过引诱用户点击一个恶意链接
- 存储型:恶意代码被保存在目标网站的服务器上,稳定并且持久
1.2 防御:
- 转义输出
- 设置httpOnly 使得 cookie只有http能够访问
- 对用户输入的信息进行过滤,通过替换标签的方式进行转码或解码
例如<> 空格 & '' ""等替换成html编码
2.XSRF/CSRF 攻击
跨站请求伪造
攻击者盗用用户的身份信息,并以用户的名义进行发送恶意的请求等,例如发邮件,盗取账号等非法手段。
主要来源于
- 携带业务特性参数的GET 请求
- 被隐藏和伪造的POST 请求
导致用户不知情的情况下对其他网站接口进行了提交。
比如:你登录网站,并在本地种下了cookie
如果在没退出该网站的时候 不小心访问了恶意网站,而且这个网站需要你发一些请求等
此时,你是携带cookie进行访问的,那么你的种在cookie里的信息就会被恶意网站捕捉到,那么你的信息就被盗用,导致一些不法分子做一些事情
2.1 防御:
1、验证HTTP Referer字段
在HTTP头中有Referer字段,他记录该HTTP请求的来源地址,如果跳转的网站与来源地址相符,那就是合法的,如果不符则可能是csrf攻击,拒绝该请求
缺点:某些自己设置了不发送referer字段的正常用户也会被拒绝访问。
2、在请求地址中添加token并验证
这种的话在请求的时候加一个token,值可以是随机产生的一段数字,比如url:http://www.abc.com/token=xxxxxx
token是存入数据库之后,后台返给客户端的,如果客户端再次登录的时候,
后台发现token没有,或者通过查询数据库不正确,那么就拒绝该请求
(Token加密后通过Cookie储存,只有同源页面可以读取,把Token作为重要操作的参数,CSRF无法获取Token放在参数中,也无法仿造出正确的Token,就被防止掉了)
3、在HTTP头中自定义属性并验证
如果说通过每次请求的时候都得加token那么各个接口都得加很麻烦,
那么我们通过http的请求头来设置token
例如:
$.ajax({
url: '/v1/api',
dataType: 'json',
data: param,
type: 'post',
headers: {
'Accept': 'application/json',
'Authorization': tokenValue
}
success: function (res) {
console.log(res)
}
})
3.网络劫持/DNS劫持
网站的访问并非进入目标服务器,而是中间被转移到其他网站了。
DNS劫持就是通过劫持了DNS服务器,通过某些手段来取得某个域名的解析记录控制权,进而修改此域名的解析结果,
导致对该域名的访问由原IP地址转入到修改后的制定IP,
其结果就是对特定的网站不能访问或访问的是假网址,
从而实现窃取资料或者破坏原有正常服务的目的。
简单点说,就是我们请求的是 http://www.a.com/index.html ,直接被重定向了 http://www.b.com/index.html,
3.1 分类:
将劫持分为下面两类:
- 跳转型劫持:用户输入地址A,但是跳转到地址B
- 注入型劫持:有别于跳转型型劫持,指通过在正常的网页中注入广告代码(js、iframe等),实现页面弹窗提醒或者底部广告等,又分为下面三个小类:
- 注入js类劫持:在正常页面注入劫持的js代码实现的劫持
- iframe类劫持:将我们正常页面嵌入iframe或者页面增加iframe页面
- 篡改页面类劫持:正常页面出现多余的劫持网页标签,导致页面整体大小发生变化
3.2 防御:
1.使用https
能够实施劫持的根本原因,是 HTTP 协议没有办法对通信对方的身份进行校验以及对数据完整性进行校验。如果能解决这个问题,则劫持将无法轻易发生。
2.更改 URL 参数绕过运营商标记
这样就完了吗?没有,我们虽然重定向了父页面,但是在重定向的过程中,既然第一次可以嵌套,那么这一次重定向的过程中页面也许又被 iframe 嵌套了,真尼玛蛋疼。
当然运营商这种劫持通常也是有迹可循,最常规的手段是在页面 URL 中设置一个参数,例如http://www.example.com/index.html?iframe_hijack_redirected=1 ,其中 iframe_hijack_redirected=1
表示页面已经被劫持过了,就不再嵌套 iframe 了。所以根据这个特性,我们可以改写我们的 URL ,使之看上去已经被劫持了:
4.DDOS攻击
分布式拒绝服务,Distribute Deny of Seriver
原理:利用分布式的客户端,向目标发起大量看上去合法的请求,消耗/占用大量资源,从而达到拒绝服务的目的。
“拒绝服务”:不断地提出服务请求,让合法用户的请求也无法得到及时处理
“分布式”:组织很多同伙,同时提出服务请求
“僵尸网络”:(上一步无法组织) 控制N多计算机进行攻击
=>让一个公开网站无法访问
5.SQL注入攻击
6.点击劫持
套一个透明层,让你在不知情的情况下点击了某个按钮,从而进行了什么操作
结束
如果文章对你有帮助,麻烦点赞哦!一起走码农花路~