网络安全基础
Data leak 一大堆,谷歌一下,上亿个条目。 Steam也有过免费充值漏洞。
想要创造一个安全的网站,先要了解常见的黑客攻击手段。
攻击手段
XSS 脚本注入
直接把用户输入的字符串注入DOM进行渲染
举例:输入用户名,然后显示用户名使用
element.innerHTML = username
就会造成脚本注入。
本质上是开发者盲目信任用户提交的内容。
XSS可以难以让用户感知
XSS可以窃取用户的cookie和token等信息,进而黑客可以伪装用户登录
XSS也可以弹窗诱导用户(填写身份证号,银行卡密码这样子的)
举个容易被攻击的前端代码例子:

这里直接把content传给后端了,没有过滤,然后dom树直接渲染了
XSS攻击分类:
Stored XSS
恶意脚本存到了数据库中
直接攻击网站全部用户
如:有人在b站上传视频,内嵌XSS攻击,直接泄露你的账号
Reflected XSS
URL中Query : /?param = command
command为攻击者注入的命令
DOM-based
手段和Reflected差不多

CSRF攻击
CSRF也叫跨站脚本攻击
跨站伪造请求:登录木马网站却请求其他网站的API
构造GET请求

构造POST请求

SQL注入
一张图解释什么叫sql注入
前端: 一个呆子写的,没有安全性的代码 
黑客端:

删库跑路

DDoS
TCP握手拒绝
大家都知道TCP三次握手(SYN, ACK是TCP报文首部的参数)
Client->Server: SYN=1
Server->client: SYN=1 ACK=1
Client->Server: ACK=1
这三次握手之后才确立链接。
DoS 就是Denial of Service, 就是客户端第一次握手之后拒绝第三次握手,然后服务端就一直发第二次握手但是求而不得,浪费服务器资源。 
防御网络攻击
XSS-防御
一张图告诉你如何防御XSS

前端主流框架默认防御XSS
服务端工具:DOM-purify
如果用户输入字符串必须生成DOM?
只能特殊情况特殊处理。注意几点XSS手段:
如果用户上传svg文件?是可以插入script
用户自定义跳转链接?其实可以注入javascript代码
用户自定义样式?偷偷执行攻击代码
同源策略-sameURLpolicy
执行脚本,不跨域名,不跨协议,防御CSRF攻击。





