记录一些有关web安全以及cookie、session的文章

session和cookie的区别和联系:http://www.cnblogs.com/endlessdream/p/4699273.html

HTTP是无状态的协议,那么客户端与服务端的数据一旦交互完毕,客户端与服务器端的链接也就会关闭了,当再次交换数据的时候就需要建立新的链接,也就是服务器无法从链接上跟踪会话;

会话跟踪:是web程序中常用的技术,用来跟踪用户的整个会话的,常用的会话跟踪技术是Cookie和Session。Cookie通过在客户端记录信息确定用户身份后,Session通过在服务器端记录信息确定用户身份。

会话cookie一般不存储在硬盘上而是保存在内存里。如果设置了过期时间,浏览器会把cookie保存到硬盘上,存储在硬盘上的cookie可以在浏览器的不同进程间共享,这种称之为持久cookie。

cookie保存在客户端浏览器中,具有不可跨域性。单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie。

session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。

因此可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie。

 

Web前端安全之XSS攻击 http://www.haomou.net/2015/10/30/2015_webxss/

XSS漏洞分为两种,一种是DOM Based XSS漏洞,另一种是Stored XSS漏洞。

基于DOM的XSS

DOM Based XSS是一种基于网页DOM结构的攻击,该攻击特点是中招的少数人。

存储型XSS

Stored XSS是存储式XSS漏洞,由于其攻击代码已经存储到服务器上或者数据库中,所以受害者很多人。

XSS主要就是利用漏洞执行你需要的执行的js代码,常见的XSS:

1 <img scr=1 onerror=alert(‘xss’)>当找不到图片名为1的文件时,执行alert(‘xss’)
2 <a href=javascrip:alert(‘xss’)>s</a> 点击s时运行alert(‘xss’)
3 <iframe src=javascript:alert(‘xss’);height=0 width=0 /><iframe>利用iframe的src来弹窗
4 <img src=”1″ onerror=eval(“/x61/x6c/x65/x72/x74/x28/x27/x78/x73/x73/x27/x29”)></img>过滤了alert来执行弹窗

基于Token的WEB后台认证机制 http://www.cnblogs.com/xiekeli/p/5607107.html

Cookie Auth 就是在一次请认证的时候在服务器端创建一个session对象,同时在客户端的浏览器创建一个cookie对象;通过客户端带来的cookie对象来与服务器端的session对象匹配来

实现状体管理。

Token Auth

Token Auth相对于Cookie Auth的有点

1、支持跨域访问:前提是传输的用户认证信息是通过HTTP头传输的;

2、无状态(也称:服务端可扩展行):Token机制在服务端不需要存储session信息,因为Token自身包含了所有登陆用户的信息,只需要在客户端的cookie或本地介质存储状态信息;

3、更适用CDN:可以通过内容分发网络请求你服务端的所有资料(如:js/html/图片等),而你的服务端只要提供API即可;

4、去耦:不需要绑定到一个特定的身份验证方案。Token可以在任何的地方生成,只要在你API被调用的时候,你可以进行Token生成调用即可;

5、更适用移动应用:当你的客户端是一个原生平台(IOS,Android,windows 8等)时,Cookie是不被支持的(你需要通过cookie容器进行处理),这时采用Token认证机制就会简单的多;

6、CSRF:因为不在依赖于cookie,所有就不需要考虑对CSRF(跨站请求伪造)的防范;

7、性能:一次网络往返时间(通过数据库查询session信息)总比做一次HMACSHA256计算的Token验证和解析要费时的多;

8、不需要为登陆页面做特殊处理:如果你使用Protractor做功能测试的时候,不再需要为登陆页面做特殊处理;

9、基于标准化:你的API可以采用标准化的JSON WEB Token(JWT)。这个标准已经存在多个后端库和多家公司的支持。

 

对Token认证的五点认识

1、一个Token就是一些信息的集合;

2、在Token中包含足够多的信息,以便在后续请求总减少查询数据库的几率;

3、服务端需要对cookie和HTTP Authrorization Header进行Token信息的检查;

4、基于上一点,你可以用一套Token认证代码来面对浏览器类客户端和非浏览器类客户端;

5、因为Token是被签名的,所以我们可以认为一个可以解码认证通过的token是由我们系统发放的,其中带的信息是合法有效的;

posted @ 2017-09-15 18:12  木木月夕  阅读(269)  评论(0编辑  收藏  举报