$ _request:過去の遺物? APIの時代におけるその関連性を評価します
はい、$ _Requestは推奨されなくなり、最新のPHP開発では避ける必要があります。 1。$ _Requestは、$ _GET、$ _POST、$ _COOKIEなどの複数のソースからデータを集約し、入力ソースが不明確になり、デバッグの難易度が増加します。 2。Cookieデータを含めると、セキュリティリスクが発生し、CSRFまたはデータ改ざんが発生しやすくなります。 3. RESTFUL APIのクリアな入力仕様に準拠しておらず、インターフェイスの予測可能性に影響します。 4. php.iniの変数_orderおよびrequest_order構成に依存して、アプリケーションの移植性を低下させます。 5。LaravelやSymfonyなどの最新のフレームワークでは、リクエストオブジェクトはより安全でより明確で検証可能な入力処理方法を提供します。 6. JSONリクエスト本体は自動的に$ _Requestを入力せず、適用性をさらに制限するために追加の処理が必要です。したがって、$ _GETまたは$ _POSTを明示的に使用するか、フレームワークによって提供されるオブジェクトを要求する必要があります。セキュリティと保守性を向上させるために使用する必要があります。
PHPの$_REQUEST
SuperGlobalは、開発者の間で長い間議論のトピックでした。特にAPIやより厳しいセキュリティプラクティスが支配する最新のWeb開発では、Get、Post、Cookieなどのさまざまなソースからのユーザー入力にアクセスするための便利なショートカットでした。それで、 $_REQUEST
依然として関連していますか、それとも宗教的なベストが残されていますか?

$ _Requestとは何ですか?それはどのように機能しますか?
$_REQUEST
、構成に応じて、 $_GET
、 $_POST
、 $_COOKIE
、さらには$_FILES
複数の入力ソースからデータを収集するPHP SuperGlobalアレイです。デフォルトでは、URLパラメーターを介して送信された値、フォーム送信、およびCookieを集約するため、ソースを指定せずに入力に簡単にアクセスできます。
例えば:

echo $ _request ['name'];
この行は、開発者が明示的にどこから来たのかを明示的に選択して、 ?name=John
、post body、またはcookieなどのクエリ文字列からname
を取得できます。
一見、便利に聞こえます。しかし、その非常に便利さも最大の欠陥です。

なぜ$ _Requestが好意から落ちているのか
今日の開発環境、特にRestful APIおよびシングルページアプリケーションでは、 $_REQUEST
の欠点がその利点を上回ります。その理由は次のとおりです。
データソースのあいまいさ:
$_REQUEST
複数のソースから引っ張るため、GETパラメーター、ポストボディ、またはCookieから値が来たかどうかはすぐにわかりません。これにより、デバッグが難しくなり、意図しない行動のリスクが高まります。セキュリティリスク:Cookieはデフォルトで
$_REQUEST
に含まれています。つまり、ロジックが精査なしで$_REQUEST
を使用している場合、Cookieからのデータを不注意に信頼する場合があります。ユーザーが操作できるようになります。これにより、CSRFやデータ改ざんなどのセキュリティ問題への扉が開かれます。不十分なAPI設計:最新のAPIは、明確で予測可能な入力処理に依存しています。 REST APIは、特定の場所でデータを期待しています。フィルタリング用のクエリパラメーター、ペイロード用のポスト/プットボディ。
$_REQUEST
を使用すると、これらの行が曖昧になり、エンドポイントを文書化してテストするのが難しくなります。構成依存関係:
$_REQUEST
のコンテンツは、PHPのvariables_order
およびrequest_order
ディレクティブに依存します。これらがサーバーで変更された場合、アプリケーションは予期せずに破損または動作する可能性があります。
いつ(もしあれば)$ _Requestを使用する必要がありますか?
$_REQUEST
まだ理にかなっている可能性のある非常に狭いユースケースがあります。
- セキュリティとスケーラビリティが大きな懸念事項ではないシンプルなスクリプトまたは内部ツール。
- まだリトル化されていないレガシーアプリケーション。
- GETとPOST(たとえば、検索フォーム)の両方を受け入れるハンドラーをフォームしますが、それでも
$_GET
または$_POST
明示的にチェックすることは明確です。
しかし、これらの場合でさえ、明示的である方が良いです。例えば:
$ name = $ _post ['name'] ?? $ _get ['name'] ??ヌル;
これにより、意図が明確になり、誤ってCookieデータを引っ張らないようにします。
API時代のベストプラクティス
最新のPHP開発では、特にLaravel、Symfony、Slimなどのフレームワークを使用してAPIを構築する場合、Inputハンドリングは、次の要求オブジェクトを介して行われます。
- タイプセーフ
- 検証
- ソース固有
たとえば、Laravel:
$ name = $ request-> input( 'name');
この方法は、より表現力豊かであるだけでなく、箱からの検証、フィルタリング、および消毒を可能にします。
さらに、API呼び出しからのJSONペイロードは、RAW入力であるため、とにかく$_REQUEST
に自動的に含まれていません。それらを処理するには$_REQUEST
file_get_contents('php://input')
とjson_decode()
が必要です。
結論
$_REQUEST
、Webフォームと簡単なスクリプトが支配するPHPの初期に役立ちました。しかし、APIの時代、セキュリティ認識、構造化されたフレームワークでは、それはほとんど時代遅れです。そのあいまいさ、セキュリティリスク、および精度の欠如により、最新のアプリケーションに適していません。
結論: $_REQUEST
避けてください。データがどこから来たのかを明確にしてください。代わりに、 $_GET
、 $_POST
、または適切な要求オブジェクトを使用します。コードはより安全で、より明確で、メンテナンスが容易になります。
基本的に、 $_REQUEST
が壊れているわけではありません。それは、私たちがより良い方法を学んだということです。
以上が$ _request:過去の遺物? APIの時代におけるその関連性を評価しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

UsingPHP’s$_REQUESTsuperglobalintroducessecurityrisksbecauseitcombinesinputfrom$_GET,$_POST,and$_COOKIE,leadingtounpredictablebehavior;2.Itallowsunintendedinputsourcestooverrideintendedones,suchasamaliciouscookietriggeringadeleteactionmeanttocomefrom

$ _GET、$ _ POST、および$ _COOKIE、MakingImpossibletodEterminethESOSOURCEOFDATAの$ _RequestinTroduceSdataMbiguityBymergingInputsを使用します.2

$ _requestisdiscouragedinmodernphpbecauseItmergeSinputfrom $ _get、$ _ post、および$ _cookie、creatingsourceambiguitythatunderminessecurityand predictability.2.thisambiguityenableSablessableassablesscascokietampering、requestmethodconfusion as andcsrfbypass

$ _requestはGET、POST、およびCookieデータをマージしますが、セキュリティと予測可能性のリスクがあります。主要な競合の場合、そのオーバーライド順序はphp.iniの変数_orderまたはrequest_orderによって決定され、デフォルトはEGPCSになります。たとえば、Get、Post、Cookieに「ユーザー」パラメーターがある場合、ポスト値が勝ちます。 $ _requestを使用すると、セキュリティの脆弱性、予測不可能な動作、テストの難しさにつながる可能性があります。ベストプラクティスは、$ _Requestの使用を避けることですが、$ _get、$ _post、または$ _cを明示的に使用する必要があります

TheShiftrom $ _RequestToreQuestObjectsRepresENTENTENTSAMAMORPHPDEVELOPMENT.1.REQUESTOBJECTSABSTRACTSINTOACLEAN、CONSINTENTAPI、exhinatingAmbiguitaBoutInputSources.2.TheyenhancesecurationByuringBuiring-Infiltering、

$ _RequestDuetOunPredictedAdaTaSourceandSecurityRisksを回避します

forequest_orderdirectiveinphp.inideTermines(get、post、cookie)aremergedinto $ _requestandtheirprecedenceordor; request_order = "gp"は、$ _ requestincludesonlygetandpostdata、postorridoverdoversovergeysconconconflict;

$ _requestは、$ _get、$ _post、$ _cookieを組み合わせているため、避ける必要があります。 2。そのあいまいさは攻撃面を拡大し、CSRF、Cookieの改ざん、予期しない状態の変更を発生させる可能性が高くなります。 3.コードの意図は不明で、デバッグとメンテナンスが困難であり、セキュリティ設計の原則に違反します。 4。$ _GETを使用してiDEmpotentリクエストを処理する必要があります。$ _POSTを使用して、状態の変更を処理し、明示的に$ _Cookieにアクセスし、厳密に検証する必要があります。 5. PSR-7要求の抽象化、最新のフレームワーク要求オブジェクト、入力検証ライブラリを使用して、セキュリティと保守性を向上させることをお勧めします。 6.取得と投稿を同時に処理する必要がある非常に少数のシナリオでさえ、
