找出PHP中的HTTP方法[重复]
Posted
技术标签:
【中文标题】找出PHP中的HTTP方法[重复]【英文标题】:Find out HTTP method in PHP [duplicate] 【发布时间】:2010-12-05 00:22:19 【问题描述】:如何找出当前请求使用的方法(通常是 GET 或 POST)?
【问题讨论】:
【参考方案1】:$_SERVER['REQUEST_METHOD']
见the docs。它将包含大写的请求方法(即“GET”、“HEAD”、“POST”、“PUT”)。
【讨论】:
【参考方案2】:检查时
$_SERVER['REQUEST_METHOD']
似乎是显而易见的选择,因为有些人提倡安全的超全局替代方案(Is using superglobals directly good or bad in php? 和类似问题),因此可以改为使用自动消毒
filter_input( \INPUT_SERVER, 'REQUEST_METHOD', \FILTER_SANITIZE_SPECIAL_CHARS )
(您当然可以使用其他过滤器,例如FILTER_SANITIZE_STRING
- 完整列表请参见here)。
显然,在常规 (GET
/POST
) 的情况下,没有什么需要消毒的,但好习惯仍然是 IMO 的好习惯。
http://php.net/manual/en/reserved.variables.server.php
http://php.net/manual/en/function.filter-input.php
【讨论】:
如果只想知道是GET
还是POST
之类的,不需要过滤。但是,您想测试该方法,如果未按预期匹配,您可以回退到“无法理解的 HTTP 方法”错误(HTTP 代码 405)。 en.wikipedia.org/wiki/List_of_HTTP_status_codes#405
@AlexisWilke 就像我说的,in the regular (GET/POST) case there ain't anything to sanitize
; OTOH,如果结果(变量的值)是,例如(无论出于何种原因)进一步用作例如输出字符串或自动生成的脚本主体的一部分,并且(同样,无论出于何种原因)如果 Web 服务器被窃听 (and there are bugs in web servers) 并且容易注入无效的请求方法,这可能可能(尽管它是当然极不可能)result in arbitrary code execution or data generation.以上是关于找出PHP中的HTTP方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章