2009-10-08 5 views

答えて

165
$_SERVER['REQUEST_METHOD'] 

the docsを参照してください。リクエストメソッドの大文字小文字が含まれます(つまり、「GET」、「HEAD」、「POST」、「PUT」)。

9

人々のいくつかは、安全なスーパーグローバル代替(Is using superglobals directly good or bad in PHP?と同様の質問を)提唱されているので

$_SERVER['REQUEST_METHOD'] 

をチェックすることは、当然の選択だが、一つは実際に

filter_input(INPUT_SERVER, 'REQUEST_METHOD') 

(おそらくとをautosanitizing使用することができますいくつかの追加のフィルタリングスイッチ、例えばFILTER_SANITIZE_SPECIAL_CHARS)。

もちろん、通常の(GET/POST)のケースでは、消毒するものはありませんが、良い習慣はまだまだ良い習慣IMOです。

http://php.net/manual/en/reserved.variables.server.php

http://php.net/manual/en/function.filter-input.php

+0

あなたはちょうどそれが 'GET'または' POST'かなどであるかどうかを知りたい場合は、フィルタリングは必要ありません。ただし、メソッドをテストする必要があり、期待どおりに一致しない場合は、「理解できないHTTPメソッド」エラー(HTTPコード405)にフォールバックすることができます。 https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#405 –

+0

@AlexisWilke「定期的(GET/POST)のケースでは、何も消毒するものはない」と言ったように。結果(変数の値)が、例えば、OTOHである場合、 (そして何らかの理由で)さらに使用される。出力文字列の一部または自動生成されたスクリプト本体、そして(何らかの理由で)Webサーバーが盗聴されている場合(Webサーバーにバグがある場合)](http://archive.apache.org/gnats/)無効なリクエストメソッドを注入する傾向がありますが、これは潜在的には(潜在的には起こりそうもないが)任意のコード実行やデータ生成の結果となる可能性があります(https://xkcd.com/327/)。 – vaxquis

関連する問題