Re: [请益] 如何判断表单提交来源是从本站传送的?

楼主: gpmm (银色)   2016-10-26 21:47:40
※ 引述《red0whale (red whale)》之铭言:
: 如题,
: 我知道能用HTTP_REFERER来判断上一页表单是否为从本站发送的
: 但其实这样并不是最好的
: 因为使用者一样能用cURL来提交一个假的HTTP_REFERER来骗过PHP
: 所以有没有一个最好的方法来判断表单是否为从本站发送的?
如果你追求的是“完全的要求表单由本站发送”,这种东西本质上是不可能的。
因为 HTTP 本身是 stateless,资讯是在“主机”和“浏览器端”互相来回传递,
每一个 request / response 都只是“包含了资讯的单向传递”。
你什么时后有了“表单是从本站发送”的幻觉? XD
表单永远都是从你的 borwser 送出的,那是你的电脑 / 浏览器,
和哪个网站一点关系都没有。
作者: yanli2 ( Yan™)   2016-10-28 16:13:00
原文删掉了 应该是原原PO找到了解决方案
作者: tkdmaf (皮皮快跑)   2016-10-28 16:37:00
也有可能是恼羞成怒所以删了。
作者: imhaha (嘿嘿)   2016-10-28 16:49:00
因为这篇也没解决到问题 他生气了XD
作者: rockmanalpha (KIN)   2016-10-28 18:07:00
比较简单的做法就是产生一个token放在session内页面塞一个input field塞那个token一起提交 到后端跟session比对 不过这也无法完全防止伪装
作者: tkdmaf (皮皮快跑)   2016-10-28 18:48:00
我觉得大家都不用再提了……反正都被说成答非所问了。
作者: GALINE (天真可爱CQD)   2016-10-28 18:52:00
我是觉得也不用说成这种程度...毕竟这是个满大的需要只是它真的没有银子弹可以解...
作者: xxxzzz (...)   2016-10-29 00:24:00
看到HTTP_REFERER了,还能回这篇内容,也真令人匪夷所思
作者: spfy (spfy)   2016-10-29 11:56:00
其实原原PO自我风格很强烈阿...不是他要的都不是解答
作者: xdraculax (首席怪叔叔)   2016-10-29 12:34:00
为何有 HTTP_REFERER 就不能回这篇?
作者: Peruheru (还在想)   2016-10-29 13:06:00
因为那就表示已经知道请求跟服务器无关了或是反过来说,就是不知道HTTP_REFERER的意义才会提问知道那东西能用,却不知道那东西代表得意义我猜啦
作者: tkdmaf (皮皮快跑)   2016-10-29 13:27:00
我只能说,没看过最原始po文的人的内容,就别瞎猜了。总之他那句不要“答非所问”,才是最让人感冒的。其他你们想过的方法,那篇的推文都有提到过。而且我最不爽的,就是问题解就删问题的人。(不管有没解)如果最后要删问题,不如一开始就别问。删问题这一点,我倒希望版主纳入考虑一下。
作者: Peruheru (还在想)   2016-10-29 21:44:00
我看过阿,我还有推到文,应该可以猜一下XD
作者: kyleJ (资工人)   2016-10-30 11:11:00
原原PO知道HTTP_REFERER 却不知道HTTP怎么运作的…
作者: fashionjack (神奇傑克)   2016-10-31 08:12:00
他们没经过网页就直接丢进MySQL,网页要如何防?input filed加隐藏参数我用过,识别码用过,皆无效。
作者: rickysu (Ricky)   2016-11-01 09:04:00
这些问题得透过各种不同的方式来处理单纯避免被Cross Site透过Referer以及Origin就可以阻挡如果要阻挡使用Curl直接送出请求,那就得透过 CSRF token或是 Captcha如果想要避免对方短时间送出大量请求,除了 Captcha还可以使用工作量证明,借由让Client耗费大量资源,避免被灌爆,让对方知道他要攻击你得付出比你更多的代价。

Links booklink

Contact Us: admin [ a t ] ucptt.com