Windfly`s Blog-一个注重技术分享的博客
  1. 首页
  2. 技术运用
  3. 内容

Token(令牌)设计的运用地方

一,token设计经常用于防止重复提交表单,说白就是传值。 其中最关键的是在表单放入这么一段代码

当用户第一次提交订单的时候,服务器端会把$_SESSION['token']赋值重新生成,其值由$_SESSION['token']=mt_rand(time())之类的函数产生随机数; 当用户第二提交表单的时候,此时$_POST['token']的值和$_SESSION['token']的值是不一样,再设计一段if判断语句来提示用户 请忽重复提交表单或者刷新 当然,根据以上的思路过程来说,其实就是利用session的原理。另外,对于防止重复刷新或者提交表单,还有其他的思路,如果有兴趣可以移步此处http://www.jb51.net/article/39314.htm。 

二,token设计也可以用于用户的唯一通行证,用来验证身份的,而不是用来传值。此时token一定要是不可明文,如果是明文,那就太危险了,所以要采用一定的加密方式.密文要可逆.不要简单的直接使用某个加密算法,你可以假如一些自己的算法来做这件事情,那么即使你使用的算法被破解了,他们也不一定能破解你的密码。很简单的一个例子例如:

然后需要的信息是应该从服务器里面获得的,而不是盲目的信任用户提交上来的信息。通常来说,应该是客户端和服务端有相同的加密方法。服务端根据相同的方法,整合本地和客户端提交上来的信息进行计算后,获得到了相同的token,则证明客户端有正确的授权,所以给予某种权限,而不是用来传递信息。 另外,token不需要存储的,你可以使用AES的可逆向加/解密算法对数据进行加密,如aes.ecode(userId+time+info+key(密钥)),生成token后把这个串传回给客户端,不需要保存,等下次他传回给你的时候你只需要aes.decode(token)解密一下就可以获得这里面的用户信息与当前登陆的用户信息对比一下就行了。

  php
分享到

作者  :  windfly

本文由 windfly 原创,未经作者许可禁止转载!转载若许可请注明来自 Windfly`s Blog



评论列表