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"> <p><label for="name">Name</label> <input type="text" name="name" id="name" size="20″ maxlength="></p> <input type="hidden" name="token" value="<?php echo $token;?>"> <p><input type="submit" name="submit" value="go"></p> ?>
登录后复制
我的问题是:
如果保存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 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)