php防止远程提交表单的有关问题
程序员文章站
2022-03-24 21:02:21
...
php防止远程提交表单的问题。
在网上找到一段防止远程提交表单的demo,它用的是md5(uniqid(rand()))生成令牌验证的方法,如下:
我的问题是:
如果保存sessionID的cookie可以被找到,那不就可以在远程提交这个表单,然后通过一些操作修改请求的header头,把获取的cookie放进去。
如果上面这种方法可行的话,那这段代码不就不能起到防止远程提交表单的作用了吗?
------解决方案--------------------
这个不一定吧!session的定义是在服务器端生成一个session文件,并放在服务器端,并生成一个session_id,通过cookie放到客户通,当你访问session的时候会用到客户端的session_id;但是是不是可以直接这个session_id去访问服务端的session文件,这个并不清楚,若有方法的话,那就可以通过session_id直接访问session信息了,这个防止远程表单提交的就不起作用了,反之,则ok!
------解决方案--------------------
sessionID 是动态的,找到了也没有!
不过你的这个代码只能方式静态表单的提交。并不能防止机器人提交
只要先进入你的页面(当然是需要的,因为要知道你的表单是否变化了),于是你那宝贵的 token 就到我手上了,然后就.....
------解决方案--------------------
用户能访问的, 计算机一样可以搞.
先访问表单页面正则取TOKEN, 然后提交表单把TOKEN也一起提交了.
在网上找到一段防止远程提交表单的demo,它用的是md5(uniqid(rand()))生成令牌验证的方法,如下:
- PHP code
" method="post">?>
我的问题是:
如果保存sessionID的cookie可以被找到,那不就可以在远程提交这个表单,然后通过一些操作修改请求的header头,把获取的cookie放进去。
如果上面这种方法可行的话,那这段代码不就不能起到防止远程提交表单的作用了吗?
------解决方案--------------------
这个不一定吧!session的定义是在服务器端生成一个session文件,并放在服务器端,并生成一个session_id,通过cookie放到客户通,当你访问session的时候会用到客户端的session_id;但是是不是可以直接这个session_id去访问服务端的session文件,这个并不清楚,若有方法的话,那就可以通过session_id直接访问session信息了,这个防止远程表单提交的就不起作用了,反之,则ok!
------解决方案--------------------
sessionID 是动态的,找到了也没有!
不过你的这个代码只能方式静态表单的提交。并不能防止机器人提交
只要先进入你的页面(当然是需要的,因为要知道你的表单是否变化了),于是你那宝贵的 token 就到我手上了,然后就.....
------解决方案--------------------
用户能访问的, 计算机一样可以搞.
先访问表单页面正则取TOKEN, 然后提交表单把TOKEN也一起提交了.
相关文章
相关视频