PHP 7.0 では削除されたので検討の余地もないことかもしれませんが、
file_get_contents
が利用できないサーバ環境で POST リクエストの生データを扱いたいときに、
仮に PHP 5.6 の環境であれば、すでに非推奨ではあるが、まだ削除されていないため、
利用する上での危険性について知りたくて質問しています。
公式のマニュアルを当たると、 php://input
の利用を推奨され、理由について記述は見当たりませんでした。
$HTTP_RAW_POST_DATA の代わりに、 php://input を使うべきです。
ディレクティブの説明にある未設定だとアクセス不可の可能性があるため、というのが有力でしょうか。
TRUE に設定すると、PHP は常に $HTTP_RAW_POST_DATA にアクセス可能とします。 この変数には生の POST データが格納されています。 指定しなかった場合は、 データの MIME 型が判別できない場合のみこの変数にアクセス可能となります。
ディレクティブの設定に依存しないが理由と考えて良いのでしょうか?
メモリの消費量も理由と思えそうなのですが、後者の $HTTP_RAW_POST_DATA
は php://input
の
typo と読み替えて妥当でしょうか?
であれば、より説得力があるかなと腑に落ちます。
POST リクエストの場合は $HTTP_RAW_POST_DATA よりも php://input を使うのが望ましいでしょう。php.ini ディレクティブの設定に依存しないからです。
さらに、$HTTP_RAW_POST_DATA がデフォルトで設定されない場合は、 always_populate_raw_post_data を有効にするよりも $HTTP_RAW_POST_DATA を使うほうがメモリの消費量が少なくなるでしょう。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/22 01:30