首页 后端开发 php教程 php防止远程提交表单的有关问题

php防止远程提交表单的有关问题

Jun 13, 2016 pm 01:24 PM
lt name quot session token

php防止远程提交表单的问题。
在网上找到一段防止远程提交表单的demo,它用的是md5(uniqid(rand()))生成令牌验证的方法,如下:

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?php session_start();

if ($_POST['submit'] == “go"){
    //check token
    if ($_POST['token'] == $_SESSION['token']){
        //strip_tags
        $name = strip_tags($_POST['name']);
        $name = substr($name,0,40);
        //clean out any potential hexadecimal characters
        $name = cleanHex($name);
        //continue processing….
    }else{
        //stop all processing! remote form posting attempt!
    }
}

$token = md5(uniqid(rand(), true));
$_SESSION['token']= $token;

function cleanHex($input){
    $clean = preg_replace("![\][xX]([A-Fa-f0-9]{1,3})!", "",$input);
    return $clean;
}

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"&gt;
<p><label for="name">Name</label>
<input type="text" name="name" id="name" size="20″ maxlength="></p>
<input type="hidden" name="token" value="&lt;?php echo $token;?&gt;">
<p><input type="submit" name="submit" value="go"></p>

?&gt;


登录后复制


我的问题是:
如果保存sessionID的cookie可以被找到,那不就可以在远程提交这个表单,然后通过一些操作修改请求的header头,把获取的cookie放进去。
如果上面这种方法可行的话,那这段代码不就不能起到防止远程提交表单的作用了吗?

------解决方案--------------------
这个不一定吧!session的定义是在服务器端生成一个session文件,并放在服务器端,并生成一个session_id,通过cookie放到客户通,当你访问session的时候会用到客户端的session_id;但是是不是可以直接这个session_id去访问服务端的session文件,这个并不清楚,若有方法的话,那就可以通过session_id直接访问session信息了,这个防止远程表单提交的就不起作用了,反之,则ok!
------解决方案--------------------
sessionID 是动态的,找到了也没有!

不过你的这个代码只能方式静态表单的提交。并不能防止机器人提交
只要先进入你的页面(当然是需要的,因为要知道你的表单是否变化了),于是你那宝贵的 token 就到我手上了,然后就.....
------解决方案--------------------
用户能访问的, 计算机一样可以搞.

先访问表单页面正则取TOKEN, 然后提交表单把TOKEN也一起提交了.
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SpringBoot Session怎么设置会话超时 SpringBoot Session怎么设置会话超时 May 15, 2023 pm 02:37 PM

SpringBoot Session怎么设置会话超时

session失效怎么解决 session失效怎么解决 Oct 18, 2023 pm 05:19 PM

session失效怎么解决

登录token无效问题如何解决 登录token无效问题如何解决 Sep 14, 2023 am 10:57 AM

登录token无效问题如何解决

PHP Session 跨域问题的解决方法 PHP Session 跨域问题的解决方法 Oct 12, 2023 pm 03:00 PM

PHP Session 跨域问题的解决方法

登录token无效怎么办 登录token无效怎么办 Sep 14, 2023 am 11:33 AM

登录token无效怎么办

session php默认失效时间是多少 session php默认失效时间是多少 Nov 01, 2022 am 09:14 AM

session php默认失效时间是多少

php session刷新后没有了怎么办 php session刷新后没有了怎么办 Jan 18, 2023 pm 01:39 PM

php session刷新后没有了怎么办

Vue3+Vite怎么使用双token实现无感刷新 Vue3+Vite怎么使用双token实现无感刷新 May 10, 2023 pm 01:10 PM

Vue3+Vite怎么使用双token实现无感刷新

See all articles