文章目录
Cookie,sessionStorage、localStorage的区别
数据的有效期不同 sessionStorage :仅在当前的浏览器窗口关闭前有效;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie:只在设置的cookie过期时间之前一直有效,即使窗口或者浏览器关闭。
作用域不同sessionStorage:不在不同的浏览器窗口中共享,即使是同一个页面;loacalStorage:在所有同源窗口都是共享的;cookie:在所有同源窗口中共享的
Cookie和session的区别
1.cookie数据存放在客户的浏览器上。session数据存放在服务器上。
2.cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗考虑到安全应当使用session
3.session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用cookie。
4.单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个Cookie。而session则存储于服务器,浏览器对其没有限制
简单谈一下cookie?
cookie是服务器端提供的一种用于维护会话状态信息的数据,通过服务器发送给浏览器,浏览器保存在本地,当下一次有同源请求的时候,将保存的cookie信息添加到请求头部,发送给客户端。这可以用来实现记录用户登录状态等功能。cookie一般用于存储4k大小的数据,并且只能够被同源的网页所共享访问。
服务器端可以使用set-Cookie的响应头部来配置cookie信息。一条cookie包括了5个属性值expires,domain,path,secure,HttpOnly。其中expires指的是cookie失效时间,domain指的是域名,path是路径,domain和path一起限制了cookie能够被哪些url访问。secure规定了cooke只能确保安全的环境下传输,httponly规定了这个cookie只能被服务器所访问,不能使用js脚本访问。
只发生在xhr的跨域请求的时候,即使是同源下的cookie,也不会被自动添加到请求头部,除非显示的规定。
HTTP常用状态码
200 - 请求成功
301 -永久重定向
304 Not Modified 为修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提交一个头信息指出客户端希望只返回在指定日期之后修改的资源
400 -客户端请求的语法错误,服务器端无法理解
产生原因:
- 前提提交的数据格式和字段类型与后台的实体没有保持一致
- 前端提交到后台的数据应该是JSON字符串类型,但是前端没有将对象 JSON.stringify转化成字符串。
解决方法:
- 对应字段的名称和类型保持一致。
- 将obj对象通过JSON.stringify实现序列化
401 -当前请求需要用户验证
403 -服务器已经得到请求,但是拒绝执行
500 -服务器端在执行时发成错误,无法完成请求
HTTP和HTTPS的区别
1.https协议需要到CA申请证书,一般免费的证书较少,因而需要一定费用
2.http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输
3.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80端口,后者是443
4.http的连接非常简单是无状态的,https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。(无状态的意思是其数据包的发送、传输和接受都是相互独立的。无连接的意思是指双方都不长久的维持对方的任何信息)
描述一下XSS和CRSF攻击?防御方式?
XSS:跨站脚本攻击,攻击者在返回的html中嵌入js脚本。就发生了xss攻击。分为反射型(非持久型) 存储型(持久型) DOM
反射型:发送请求时,xss代码出现在URL中,作为输出提交到服务器端解析后响应,xss代码随着响应内容一起返回到浏览器,最后浏览器解析执行代码。存储型:攻击者输入一些数据传入数据库中,其他用户看到的时候进行攻击。
DOM:DOM XSS代码并不需要服务器参与,触发XSS靠的是浏览器端的DOM解析,完全是客户端的事
CSRF:跨站请求伪造。当用户访问一个网站时,其Cookie信息还没有过期的情况下,伪装者伪造一个链接发送受害者并欺骗让其点击,从而形成CSRF攻击。
XSS防御的总体思路:对输入进行过滤,对输出进行编码,通过设置cookie httponly 禁止js脚本执行cookie。也可以设置只有在https协议下才可以发送cookie。
防御CSRF攻击主要有三种策略:尽量使用POST 验证HTTP refer字段;在请求地址中设置token并验证,在HTTP头中设置自定义属性并进行验证。
区别
XSS 运用的是用户对网站的信任
CSRF 运用的是网站对用户的信任
什么是点击挟持?如何防范点击挟持?
点击挟持是一种视觉欺骗的手段,攻击者将需要攻击的网站通过iframe嵌套的方式嵌入自己的网页中,并将iframe设置为透明,在页面中诱导用户点击。
我们可以在http相应的头中设置x-frame-options来防止iframe嵌套的点击挟持。通过不同的值,可以规定页面在特定的一些情况下才能作为iframe来使用
SQL注入攻击?
SQL注入攻击指的是攻击者在HTTP请求中注入恶意的SQL代码,服务器使用参数构建数据库SQL命令时,恶意的SQL被一起构造,破坏原有的SQL结构,并在数据库中执行,达到编写程序预料之外结果
强,协商缓存
缓存分为两种:强缓存和协商缓存。
获取资源形式 | 状态码 |
---|