TOKEN验证防止CSRF攻击的原理。CSRF中文名是跨站请求伪造攻击,黑客能够经过CSRF攻击来伪造咱们的身份,从而进行不法的活动。好比说是以咱们的身份进行转帐,发送邮件等操做。后端
要想作到预防CSRF攻击,首先须要了解CSRF攻击的原理,只有这样才能够真正的掌握预防的手段。CSRF攻击的原理是这样的:浏览器
(1):当咱们登录某个网站之后,由于HTTP协议是无状态的,因此为了保存咱们的登录状态,服务器中的程序就必须建立一个session文件,用来保存咱们的登录信息。服务器
(2):为了可以在多个页面相互切换访问之间,记录咱们的状态,服务端首先会将一个响应的session文件对应的session_id传递给客户端浏览器。浏览器接受到之后就会将这个值写入到一个cookie文件中。在下一次访问该网站的内容的时候,就会将客户端本地所存储的属于该网站的cookie所有发送给服务端程序,其中就包括存储session_id的cookie。服务端若是须要检测请求者的身份,就能够根据传递过来的cookie中所包含的session_id来检测服务端是否存在响应的session文件以及session文件中的内容是否合法。若是检测合法,那么就验证用户身份合法,不然不合法。cookie
(3):若是黑客在其余页面设置了一个连接,这个连接指向一个网站的转帐系统。而且当前用户是这个网站的会员,而且处于登录的状态(也就是客户端浏览器存在存储合法的session_id的cookie),那么当用户点击了这个连接之后,那么客户端浏览器就会将用户的这些信息进行传递到服务端,可是这个连接具体作了什么,用户根本不知道,这也就作到了伪造了用户的身份,作了用户都不知道的事情。。。session
那么应该怎么进行预防这种攻击那?目前主流的框架为了预防这种攻击,都是采用TOKEN机制。也就是说当用户与服务端进行交互的时候,传递一个加密字符串到服务端,服务端来检测这个字符串是不是合法的,若是不合法就有多是黑客伪造用户信息进行请求的。框架
那么这个加密字符串是怎么生成的那?加密字符串是由后端程序生成,而后赋值到页面之上。通常是由当前控制器,方法,密钥,时间组合在一块儿加密而成。传递到服务端之后,服务端从新生成一遍,若是一致就是合法的,不然就是不合法的。网站