Token说起Token,就是token,最大的特点就是随机性和不可预测性。一般黑客或者软件是猜不出来的。那么,Token的作用是什么?原理是什么?Token一般用在两个地方——防止表单重复提交和防csrf攻击(跨站请求伪造)。两者原则上都是通过sessiontoken来实现的。当客户端请求一个页面时,服务端会生成一个随机数的Token,将这个Token放入session中,然后将这个Token发送给客户端(通常是通过构造一个隐藏的表单)。下次客户端提交请求时,Token会连同表单一起提交给服务器。那么,如果应用于“反csrf攻击”,服务器会对Token值进行校验,判断是否与session中的Token值相等。如果相等,则可以证明请求是有效的,没有被伪造。但是如果应用于“防止重复提交表单”,在服务器端第一次验证相同后,会更新session中的Token值。如果用户重复提交,第二次验证判断会失败,因为用户提交的表单中的Token没有变,但是服务器端session中的Token变了。上面的session应用比较安全,但是也比较麻烦。同时,在请求多个页面、多个请求时,必须同时生成多个Token,占用资源较多,执行效率降低。因此,也可以使用cookies中存储认证信息的方式来代替sessionToken。比如在处理“重复提交”时,第一次提交后将提交信息写入cookie,第二次提交时,第二次提交会失败,因为cookie已有提交记录。但是cookie存储有一个致命的弱点。如果cookie被劫持(xss攻击可以轻易获取用户cookie),那么又一次gameover。黑客会直接实施csrf攻击。”;echo"token:".$_SESSION['token'];}}?>
