Php 阻止POST请求

Php 阻止POST请求,php,linux,apache,http-post,Php,Linux,Apache,Http Post,我有一台Linux和Apache最新版本的服务器。我注意到,如果我向网站上的任何地址发送一篇包含数据的帖子,即使没有特定的PHP脚本可以处理它,这也是可以接受的。我觉得这很正常。但我怎样才能防止这种情况?我知道有些网站(Ebay)在返回错误之前完成了帖子(想象一下,如果帖子包含一个大文件,服务器带宽消耗是有保证的)。 如何防止POST在php脚本或任何其他脚本的上游运行?您必须在Apache服务器上工作还是在.htaccess中工作?我不确定,但我认为您应该设置响应头来告诉浏览器您的端点接受了什

我有一台Linux和Apache最新版本的服务器。我注意到,如果我向网站上的任何地址发送一篇包含数据的帖子,即使没有特定的PHP脚本可以处理它,这也是可以接受的。我觉得这很正常。但我怎样才能防止这种情况?我知道有些网站(Ebay)在返回错误之前完成了帖子(想象一下,如果帖子包含一个大文件,服务器带宽消耗是有保证的)。
如何防止POST在php脚本或任何其他脚本的上游运行?您必须在Apache服务器上工作还是在.htaccess中工作?

我不确定,但我认为您应该设置响应头来告诉浏览器您的端点接受了什么

header('Access-Control-Allow-Methods', 'GET, PUT, DELETE, PATCH, OPTIONS'); // just exclude the POST method
我只是随地吐痰,我是从CORS规范中得到的。如果它不起作用,那么可能是因为这个标题必须响应选项请求


如果这样做有效,请告诉我。

我不确定,但我认为您应该设置响应标题,告诉浏览器您的端点接受了什么

header('Access-Control-Allow-Methods', 'GET, PUT, DELETE, PATCH, OPTIONS'); // just exclude the POST method
我只是随地吐痰,我是从CORS规范中得到的。如果它不起作用,那么可能是因为这个标题必须响应选项请求


如果这确实有效,请告诉我。

您必须在请求到达PHP之前阻止它。我不确定
header()
方法,但限制.htaccess的访问似乎是更安全的选择

RewriteCond %{REQUEST_METHOD} POST
RewriteRule .* – [F,L]

您必须在请求到达PHP之前阻止它。我不确定
header()
方法,但限制.htaccess的访问似乎是更安全的选择

RewriteCond %{REQUEST_METHOD} POST
RewriteRule .* – [F,L]

否。您可以添加输入字段验证以检查表单是否已填写。如果在提交之前需要检查dorm的actionphp脚本是否存在,可以使用php或ajax进行检查。使用php$filename=“yourfile.php文件路径”;如果(file_exists($filename)){$actionurl=“$filename”}或者{$actionurl=“#”}那么在表单的action=“$actionurl”中使用$actionurl,也许你可以像这里建议的那样在apache配置中使用指令Vishwa。是的,我知道,但是php不存在,甚至连脚本都不存在,目录是空的。否。您可以添加输入字段验证以检查表单是否已填写。如果在提交之前需要检查dorm的actionphp脚本是否存在,可以使用php或ajax进行检查。使用php$filename=“yourfile.php文件路径”;如果(file_exists($filename)){$actionurl=“$filename”}或者{$actionurl=“#”}那么在表单的action=“$actionurl”中使用$actionurl,也许你可以像这里建议的那样在apache配置中使用指令Vishwa。是的,我知道,但php不存在,甚至连脚本都不存在,目录是空的。如果我采用这种方法,我会阻止整个网站接受帖子吗?如果我有一个脚本可以处理帖子,我怎么能接受帖子呢?这取决于你的项目结构及其复杂性。您可以为每个可以处理POST请求的页面添加
RewriteCond
。我不知道该怎么帮你。您可能还想考虑一下为什么要阻止帖子。你提到了带宽消耗,但我不认为这是一个问题,或者更好——我不认为拒绝帖子是一个解决方案。无论谁想占用你的带宽,都可以使用GET轻松地完成,或者只针对支持POST的链接。是的,我的回答会阻止整个网站的POST请求。您必须使用自定义答案来满足您的需求。可能会将所有“非POST”脚本放在一个文件夹中,并在该文件夹中添加.htaccess规则?然后,每个站点目录都必须有其.htaccess,并具有相应的规则,并且在PHP脚本中还有其他允许或拒绝任何操作的规则。非常感谢。我想这是我正在寻找的解决方案。我试过了,但即使返回错误,帖子仍然会执行。我是从一个使用Indy idHttp组件的Delphi应用程序发布的。如果我采用这种方法,我会阻止整个网站接受帖子吗?如果我有一个脚本可以处理帖子,我怎么能接受帖子呢?这取决于你的项目结构及其复杂性。您可以为每个可以处理POST请求的页面添加
RewriteCond
。我不知道该怎么帮你。您可能还想考虑一下为什么要阻止帖子。你提到了带宽消耗,但我不认为这是一个问题,或者更好——我不认为拒绝帖子是一个解决方案。无论谁想占用你的带宽,都可以使用GET轻松地完成,或者只针对支持POST的链接。是的,我的回答会阻止整个网站的POST请求。您必须使用自定义答案来满足您的需求。可能会将所有“非POST”脚本放在一个文件夹中,并在该文件夹中添加.htaccess规则?然后,每个站点目录都必须有其.htaccess,并具有相应的规则,并且在PHP脚本中还有其他允许或拒绝任何操作的规则。非常感谢。我想这是我正在寻找的解决方案。我试过了,但即使返回错误,帖子仍然会执行。我是从一个用Delphi编写的应用程序发布的,它使用Indy idHttp组件。