这是我参与「第四届青训营 」笔记创作活动的第5天.
前言
本节课从攻击和防御两个视角,简述了前端范畴内的常见的安全questions,其中包括 XSS、CSRF、SQL 注入、DOS等.让我们来看看吧.
攻击视角
这里以一个hacker视角入场,首先是XSS,一般来讲它难以从UI上被感知到,即偷偷运行脚本.然后是他习惯用cookie和token来窃取用户信息.自身绘制UI节目,诱骗用户点击或者填写表单.其中Stored xss的恶意脚本被存储在database里面,用户访问页面从而被读取数据进一步被攻击,它的危害性极大且针对全部用户.reflect xss是在URL上面进行攻击的,但是它不涉及database.DOM-based xss,它并不需要服务器的参与进去,整个恶意攻击的发起和执行,可以全在浏览器完成并执行.Mutation-based XSS,它利用了浏览器去渲染DOM的特性 ,这里需要注意在不同浏览器,也会有区别,因为它是按照不同browser进行的恶意攻击.Cross-site request forgery即csrf,它在用户不知情的前提下利用用户权限 (cookie),还可以构造指定 HTTP请求,然后窃取或修改用户的敏感信息.
Denial of Service (DoS)拒绝服务是通过某种方式或是构造特定command,导致服务器资源被显著消耗,以至于来不及响应更多请求,导致请求挤压,进而资源崩溃的效应。Distributed DoS(DDoS), 它是在短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成 全部command,导致请求被堆积,进而资源崩溃效应,无法响应new请求.
防御视角
这里的xss永远不信任用户的提交内容,并且不会将用户提交内容直接转换成DOM,动态化生成DOM.Content Security Policy即CSP, 它去判断哪些域名是安全的或者是恶意攻击,安全域名的脚本可以执行,否则直接判错,拒绝eval 和inline script .为了避免用户信息被携带防御者使用SameSite Cookie.
结语
今天的课堂就到这了,继续整理一下干货然后继续去实践和分享感谢相遇.