常见的Web安全基础 | 青训营笔记

89 阅读3分钟

这是我参与「第四届青训营」笔记创作活动的第7天

1.前言

Web安全作为网络中非常重要的一个组成部分,需要我们去着重了解。如果大家想要深度学习的话,可以去学习信息安全相关的内容。

网络安全肯定是有两方:攻击方和防御方。那么我们就来学习这两方都有哪些常用手段来进行攻击吧。

2.常见攻击方式

2.1 XSS

最简单的攻击方式就是XSS(跨域脚本注入),也就是说:攻击方把恶意的脚本注入我们的网站进行活动。为什么他能够得手,是因为我们作为开发者盲目地信任了用户提交的内容、无法在UI上被感知到。

当用户上传东西的时候,可以上传一个带有script标签的东西,根据功能不同,可以分为存储型、反射型(服务端注入)、基于DOM的XSS攻击(浏览器注入)和基于Mutation的XSS攻击。

2.2 CSRF

另一种常见的攻击方式是CSRF(跨站伪造请求)。顾名思义,就是利用了用户的数据伪造了请求,从而修改了用户的数据。

2.3 sql注入

还有一种利用数据库的恶意注入,通过前端的脚本把用户输入的东西拼接成数据库语句。不过你也可以在其他的地方注入,比如系统命令行注入等。

2.4 DoS

这种攻击方式是通过构造特定请求,来让服务端无法处理激增的大量请求,导致正常的请求无法被处理甚至宕机。

2.5 DDos

这种就和上面不一样了,这是利用僵尸设备发送正确的请求,从而消耗服务器的带宽,达到攻击的目的。

3. 防御方式

3.1 针对XSS

永远不信任用户的提交内容,更不要把用户的提交内容直接转成DOM。

目前的主流框架都默认防御这种攻击。不过如果真有这种需求的话,就需要对对应的文件进行扫描了。也不要让用户自定义跳转链接。

3.2 CSRF的防御策略

我们需要设定哪些域名是安全的,对于对服务端来说不安全的域名我们直接拒绝访问,就可以了。我们在所有接口中对请求进行校验,否则就拒绝。

我们还可以用SameSite Cookie属性,来防止其他页面带上该页面的cookie。

3.3 对于SQL注入的防御

那对于这种数据库形式的攻击,我们就要保证最小权限原则,并且建立允许名单+过滤,并对于URL类型参数进行协议等限制。

3.4 对于DOS的防御

那么很简单,对于正则表达式需要进行检查,或者干脆直接禁用用户使用正则表达式就可以了。

3.5 DDOS

我们可以在网关层进行恶意流量识别,也可以在CDN进行过滤。一旦被流量攻击,我们可以使用快速自动扩容技术抵御攻击。

4.总结

关于HTTPS的内容查看(【前端专场 学习资料三】第四届字节跳动青训营 - 掘金 (juejin.cn))希望了解了这些知识后,能对大家的前端开发的安全性有更加深入的了解。