csrf和xss的网络攻击及防范
- CSRF攻击:(跨站请求伪造)
在受害者访问一个网站时,其 Cookie 还没有过期的情况下,攻击者伪造一个链接地址发送受害者并欺骗让其点击,从而形成 CSRF 攻击。
行为 :会盗取用户身份发送恶意请求,更改数据库。
防御CSRF 攻击主要有三种策略:
- 验证 HTTP Referer 字段;
- 在请求地址中添加 token 并验证;
- 在 HTTP 头中自定义属性并验证。
XSS攻击:(跨站脚本攻击)
嵌入一段远程或者第三方域上的JS代码。实际上是在目标网站的作用域下执行了这段js代码。
行为:给网站注入恶意的脚本,在用户浏览时进行攻击。
举例:
存储型:攻击者获取用户cookie或用户其他身份信息,对网站的数据库注入恶意信息,其他浏览者浏览时被攻击。
反射型:将攻击代码放在url的请求参数里面。
解决方案:为cookie设置属性httpOnly,对用户的输入进行检查,进行特殊字符过滤(编码解码)。
输入URL到页面加载显示完成发生了什么?
1、DNS解析
2、TCP连接
3、发送HTTP请求
4、服务器处理请求并返回HTTP报文
5、浏览器解析渲染页面
6、连接结束
说一下对Cookie和Session的认知
1、cookie存储在浏览器里,session存储在服务器里面;
2、cookie不安全,会被XSS攻击;
3、session访问量较多的时候,比较影响性能;
4、cookie单个不能超过4kb,一个站点最多存储20个cookie;
cookie有哪些编码方式?
encodeURI()
http常见的请求方法
get、post,这两个用的是最多的,还有很多比如patch、delete、put、options等等
get和post的区别
1、GET/POST都是TCP链接。GET产生一个TCP数据包;POST产生两个TCP数据包。
2、对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
3、而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
web性能优化
降低请求量:合并资源,减少HTTP 请求数,minify / gzip 压缩,webP,lazyLoad。
加快请求速度:预解析DNS,减少域名数,并行加载,CDN 分发。
缓存:HTTP 协议缓存请求,离线缓存 manifest,离线数据缓存localStorage。
渲染:JS/CSS优化,加载顺序,服务端渲染,pipeline。
浏览器缓存机制
缓存分为两种:强缓存和协商缓存,根据响应的header内容来决定。
1、强缓存相关字段有expires,cache-control。如果cache-control与expires同时存在的话,cache-control的优先级高于expires。
2、协商缓存相关字段有Last-Modified/If-Modified-Since,Etag/If-None-Match