• 技术文章 >后端开发 >php教程

    PHP Token(令牌)设计

    2016-08-08 09:26:49原创755
    转载链接:http://www.jb51.net/article/13756.htm

    PHP Token(令牌)设计 设计目标: 避免重复提交数据. 检查来路,是否是外部提交 匹配要执行的动作(如果有多个逻辑在同一个页面实现,比如新增,删除,修改放到一个PHP文件里操作) 这里所说的token是在页面显示的时候,写到FORM的一个隐藏表单项(type=hidden). token不可明文,如果是明文,那就太危险了,所以要采用一定的加密方式.密文要可逆.俺算法很白痴,所以采用了网上一个现成的方法.

    怎样避免重复提交?
    在SESSION里要存一个数组,这个数组存放以经成功提交的token.在后台处理时,先判断这个token是否在这个数组里,如果存在,说明是重复提交.
    如何检查来路?
    可选项,这个token在生成的时候,加入了当前的session_id.如果别人copy你的html(token一迸copy),在提交时,理论上token里包含的session_id不等于当前session_id,就可以判断这次提交是外部提交.
    如何匹配要执行的动作?
    在token的时候,要把这个token的动作名称写进这个token里,这样,在处理的时候,把这个动作解出来进行比较就行了.

    GEncrypt.inc.php:

     
    
    方法:
    (1)granteToken 参数:formName,即动作名称,key是加密/解密 密钥.
    返回一个字符串,形式是: 加密(formName:session_id)
    (2)isToken 参数:token 即granteToken产生的结果,formName,动作名称,fromCheck是否检查来路,如果为真,还要判断token里的session_id是否和当前的session_id一至.
    (3)dropToken,当成功执行一个动作后,调用这个函数,把这个token记入session里,

    GToken.inc.php

     
    

    从$_POST里取出token,用isToken判断.

    如果想判断是否是执行的匹配动作,可以把isToken里的formName改一下,运行,很好,没有匹配上.证明这个成功.

    以上就介绍了PHP Token(令牌)设计,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:关于PHP 7你必须知道的五件事 下一篇:201306114357-实验1
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• PHP和MySQL入门(4)• php模拟数据库常用操作效果,php模拟数据库_PHP教程• php常见的页面跳转方法汇总_PHP教程• ThinkPHP Mobile使用方法简明教程_PHP教程• PHP反射使用实例和PHP反射API的中文说明_PHP教程
    1/1

    PHP中文网