0

有没有办法通过 PHP 中的套接字阻止 POST 到 URL?我对http://en.wikipedia.org/wiki/CSRF 了如指掌,但我不想在任何形式上放置具有唯一哈希的隐藏输入,我只想防止全局 POST 到我的脚本的任何 URL远程主机或任何其他客户端。我有一种方法可以通过检查 HTTP_EXPECT 和 REQUEST_METHOD 来防止通过 cURL 进行 POST,但是当客户端通过套接字连接调用脚本时,没有任何我可以决定的特殊参数,实际上普通 POST 或 POST 之间没有区别通过插座。如果您尝试通过套接字 POST 到http://www.google.com,您将收到HTTP/1.1 405 Method Not Allowed错误,我需要的所有内容在我的 PHP 脚本中都是相同的方式。

谢谢。

4

2 回答 2

2

我不确定是否有你的问题。您可以使用mod_rewrite来禁止所有POST请求:

RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^POST 
RewriteRule .* /yourerrordocuments/405.html [R=405,L] 

把它放在你的.htaccess. 它将禁用所有发布请求。

于 2013-09-22T20:33:50.420 回答
0

@hek2mgl 是所有脚本的最佳解决方案,但是对于每个脚本,您可以尝试:

<?php
if(isset($_POST))
{
  die();
}
else
{
  echo 'continue';
}
?>
于 2013-09-22T22:46:29.693 回答