今天是我参加青训营笔记活动的第三天
假如你是一个hack-攻击篇
1.Cross-Site Scripting(XSS)
比如外部引入标签
XSS主要利用了[盲目信任用户提交内容]
如直接将用户的字符串直接转换成DOM --stringDOM(document.write,element.innerHTML=anything,SSR(user_data))
XSSdemo
没有用户提交内容过滤,可以直接提交恶意脚本
Store XSS
-恶意脚本被存在数据库中
-访问页面->读数据===被攻击
-危害最大,对全部用户可见
Reflected XSS
-不存在数据库中
-直接攻击url
DOM-based XSS
-攻击浏览器
-和Reflected XSS不同的地方主要取决于注入脚本的地方
Mutation-based XSS
-利用了浏览器渲染DOM的特性(单独优化)
-不同浏览器,会有区别(按浏览器进行攻击)
2.Cross
-在用户不知情的前提下
-利用用户权限(cookie)
-构造指定HTTP请求,盗取或修改用户敏感信息
3.Injection(注入)
-不止攻击数据库也攻击CLI,OS command或者服务端伪造请求
4.Distributed Dos
短时间内,来自大量的僵尸设备请求,服务器不能及时响应全部请求,造成请求堆积,进而雪崩效应,无法响应新的请求
攻击特点:
1-直接访问IP 2-任意api 3-消耗大量带宽(耗尽)
作为前端工程师--防御篇
针对XSS
-永远不要信任用户提交的内容(不要将用户提交的内容直接转化为DOM)
主流框架默认防御XSS
Content Security Policy(CSP)
-由我们定义哪些源(域名)是安全的
-来自安全源的脚本可以执行,否则直接报错
-对eval+inline script说禁止
CSRF的防御
服务端其他判断请求来自于合法来源的方式
先有页面后又请求
if(请求来自于合法页面)
then(服务器接收过页面请求)
then(服务器可以标识)
避免用户信息被携带(从根源上解决CSRF)