目次
スーパーグロバルとは何ですか?
一般的な落とし穴とセキュリティリスク
スーパーグロバルを使用するためのベストプラクティス
範囲と$GLOBALS理解
ホームページ バックエンド開発 PHPチュートリアル PHP SuperGlobalsのマスター:グローバルな範囲に深く飛び込みます

PHP SuperGlobalsのマスター:グローバルな範囲に深く飛び込みます

Aug 06, 2025 pm 04:36 PM
PHP Global Variables - Superglobals

PHPのスーパーグロバルは、ユーザー入力、サーバー環境、セッションなどからのデータを宣言なしのすべてのスコープでアクセスできる事前定義された、常に利用可能な変数です。主なスーパーグロバルは次のとおりです。$ get - URLパラメーターからのデータ。 $ post - httpからのデータフォームのような投稿要求。 $リクエスト - PHPの構成によって制御される$ get、$ post、$ cookieのマージ。 $セッション - リクエスト間の永続的なセッションデータ。 $ cookie - クライアントセントクッキー。 $サーバー - サーバーおよび実行コンテキスト情報。 $ファイル - アップロードされたファイルの詳細。 $ env - 環境変数。および$ Globals - すべてのグローバル変数への参照。開発者がスーパーグローバルデータを信頼できるものとして扱うと、主要なセキュリティリスクが生じますが、$ get、$ post、$ cookieの値はユーザー制御され、操作される可能性があり、XSSやSQLインジェクションなどの攻撃に対して脆弱になります。たとえば、$ get ['name']を直接出力すると、消毒されていない場合はクロスサイトのスクリプトにつながる可能性があります。一般的な落とし穴には、$ requestに依存することが含まれます。これは、Variables_orderディレクティブに応じて入力ソースが重複するため、あいまいさを引き起こす可能性があります。入力の検証または消毒に失敗しました。データベースクエリで無化型のスーパーグローバル値を使用して、SQLインジェクションへのドアが開きます。ベストプラクティスには以下が含まれます。 filter_validate_emailを使用した電子メールの検証やhtmlspecialchars()を使用して出力を逃がすなど、filter_input()やfilter_var()などの関数を使用して入力を検証および消毒する; SQL注入を防ぐためにデータベースクエリを操作するときに、PDOまたはMySqliを使用して準備されたステートメントを使用します。 ISSET()および!empty()で使用する前に、キーの存在と非空白のステータスを確認します。元のリクエストを反映する必要があるため、$ get and $ postの変更を回避します。 http_user_agentやhttp_refererのような$サーバー値に注意することは、ユーザーがサプリしてスプーフィングできるため、セキュリティロジックには適していません。そして、$ Globalsは関数内のすべてのグローバル変数へのアクセスを可能にするが、コードのテスト可能性と予測可能性を維持するために、明示的なパラメーターが渡されることを支持して避けるべきであることを理解してください。最終的に、SuperGlobalsはPHP開発に不可欠ですが、安全で保守可能なアプリケーションを確保するために、注意、意図、および適切な入力処理をもって使用する必要があります。

PHP SuperGlobalsのマスター:グローバルな範囲に深く潜ります

PHPを使用する場合、アプリケーションを介してデータがどのように流れるかを理解することが不可欠です。これにはPHPのスーパーグロバルがあります。これらの組み込み変数は、範囲に関係なく常に利用可能であるため、リクエスト、セッション、Cookieなどを処理するための強力なツールになります。しかし、大きな力で大きな責任があります。スーパーグロバルを誤用すると、セキュリティの脆弱性と非難のコードにつながる可能性があります。スーパーグロバルが何であるか、どのように機能し、効果的に使用するためのベストプラクティスを詳しく見てみましょう。

PHP SuperGlobalsのマスター:グローバルな範囲に深く潜ります

スーパーグロバルとは何ですか?

SuperGlobalsは、PHPの事前定義された変数であり、グローバル、機能、またはクラスなどのすべてのスコープで自動的に利用可能ですglobalこれらは、ユーザー入力、サーバー情報、セッションデータなど、さまざまなソースからのデータを保持する関連配列です。

主なスーパーグロバルは次のとおりです。

PHP SuperGlobalsのマスター:グローバルな範囲に深く潜ります
  • $_GET - URLパラメーターを介して送信されたデータ(クエリ文字列)
  • $_POST - HTTP POSTメソッドを介して送信されたデータ(たとえば、フォーム送信)
  • $_REQUEST - $_GET$_POST 、および$_COOKIE (configurable)の組み合わせ
  • $_SESSION - リクエスト全体に保存されているセッション変数
  • $_COOKIE - クライアントから送信されたCookie
  • $_SERVER - サーバーおよび実行環境情報
  • $_FILES - フォームを介してアップロードされたファイル
  • $_ENV - 環境変数
  • $GLOBALS - グローバルスコープで利用可能なすべての変数への参照

常にアクセスしやすいため、インポートせずに機能を使用することもできますが、自由に使用する必要があるという意味ではありません。

一般的な落とし穴とセキュリティリスク

開発者が犯す最大の間違いの1つは、スーパーグロバルを信頼できる入力として扱うことです。彼らはそうではありません。 $_GET$_POST 、または$_COOKIEからのデータは、クライアントから来て、操作できます。

PHP SuperGlobalsのマスター:グローバルな範囲に深く潜ります

例えば:

エコー「こんにちは」。 $ _get ['name'];

誰かが<script>alert(&#39;hacked&#39;)</script> nameパラメーターとして渡すと、この単純なラインはXSS(クロスサイトスクリプト)に対して脆弱です。

その他の一般的な問題は次のとおりです。

  • $_REQUESTに依存します- 複数の入力ソースをマージするため、あいまいさにつながる可能性があります。たとえば、GETパラメーターとポストフィールドの両方が同じ名前で存在する場合、どちらが優先されますか? (PHP.iniのvariables_orderディレクティブに依存します。)
  • 入力を検証または消毒しない- $_POSTを介してデータが来るからといって、安全になりません。
  • SuperGlobalsをクエリで直接使用する- mysqli_query($conn, "SELECT * FROM users WHERE id = $_GET[id]")のようなものをSQLインジェクションの扉を開きます。

スーパーグローバルデータを常に信頼されていないものとして扱い、使用前に消毒/検証してください。

スーパーグロバルを使用するためのベストプラクティス

SuperGlobalsを安全かつ効果的に使用するには、次のガイドラインに従ってください。

  • $_GETおよび$_POSTよりも$_REQUESTを好みます
    データがどこから来ているのかを明示してください。フォームデータが予想される場合は、 $_POSTを使用してください。 URLパラメーターを解析する場合は、 $_GETを使用します。これにより、コードがより予測可能で安全になります。

  • すべての入力を検証して消毒します
    PHPのフィルター関数を使用します。

     $ email = filter_input(input_post、 &#39;email&#39;、filter_validate_email);
    $ age = filter_input(input_post、 &#39;age&#39;、filter_validate_int);

    または、スーパーグローバル値でfilter_var()を使用します。

     $ clean_name = htmlspecialchars($ _ post [&#39;name&#39;]、ent_quotes、 &#39;utf-8&#39;);
  • $_POSTまたは$_GETデータを使用して準備されたステートメントを使用します
    スーパーグローバル値を直接SQLに補間しないでください。 PDOまたはmysqliの作成されたステートメントを使用してください。

     $ stmt = $ pdo-> prepare( "select * fromユーザーがemail =?");
    $ stmt-> execute([$ _ post [&#39;email&#39;]]);
  • 使用する前に初期化して確認してください
    キーが存在し、空でないことを常に確認してください:

     if(isset($ _ post [&#39;submit&#39;])&&!empty($ _ post [&#39;email&#39;])){
        //プロセスフォーム
    }
  • スーパーグロバルの変更は避けてください
    $_SESSIONまたは$_COOKIEに書き込むことはできますが、 $_GETまたは$_POST変更を避けてください。これらは元のリクエストを反映する必要があります。

  • $_SERVERに注意してください
    $_SERVER安全であるように見えますが、 HTTP_USER_AGENTHTTP_REFERERなどの一部の値はユーザーサプライで、スプーフィングできます。セキュリティの決定に使用しないでください。

範囲と$GLOBALS理解

他のスーパーグロバルとは異なり、 $GLOBALSグローバル範囲内のすべての変数への参照を提供します。例えば:

 $ name = "Alice";

function greet(){
    echo $ globals [&#39;name&#39;]; //出力:アリス
}

これは、関数内のグローバル変数にアクセスするのに役立ちますが、一般的に依存関係を明示的に渡す方が良いです。 $GLOBALSに依存すると、コードはテストとメンテナンスが難しくなります。

次のようなパターンを避けてください:

関数計算(){
    $ globals [&#39;total&#39;] = $ globals [&#39;a&#39;] $ globals [&#39;b&#39;];
}

代わりに、好みます:

関数計算($ a、$ b){
    $ a $ bを返します。
}

これにより、機能が純粋で予測可能になります。


スーパーグロバルはPHPの基本的な部分であり、それらをマスターすることは、彼らの利便性とリスクの両方を理解することを意味します。それらを意図的に使用し、すべての入力を検証し、クライアントデータが安全であると仮定しないでください。慎重に処理することで、スーパーグロバルは、ダイナミックでステートフルなWebアプリケーションを構築する上で強力な同盟国になる可能性があります。

基本的に、それは彼らを避けることではなく、賢明に使用することです。

以上がPHP SuperGlobalsのマスター:グローバルな範囲に深く飛び込みますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

ファイルをマスターするための決定的なガイドは、$ _filesスーパーグローバルを使用してアップロードします ファイルをマスターするための決定的なガイドは、$ _filesスーパーグローバルを使用してアップロードします Aug 05, 2025 pm 01:36 PM

ファイルアップロードのコアは、エラーを確認し、ファイルの種類を確認し、ファイルを変更して安全に移動することです。 1.最初に$ _files ['error']がupload_err_okであるかどうかを確認します。 2. FINFOを使用して、クライアントデータを信頼する代わりに実際のMIMEタイプを検出します。 3.ファイル拡張子を確認し、許可されたタイプを制限します。 4.パストラバーサルを防ぐために、bin2hex(random_bytes(16))などのランダム名を持つファイルを変更します。 5. MOVE_UPLOADED_FILE(); 6.ストレージの場所は、可能な限りWebルートディレクトリの外側に配置する必要があり、開示する必要がある場合は、スクリプトの実行が無効になります。 7。GDまたは

ナビゲーションデータ送信:$ _get、$ _Post、および$ _Requestの比較分析 ナビゲーションデータ送信:$ _get、$ _Post、および$ _Requestの比較分析 Aug 03, 2025 am 07:13 AM

$ _GETRETRIEVESDATAFROMURLPARAMETERS、ISVISIBLEANDBOOKMARKABLE、適切なフォルノン感受性、iDempotentoperationsieSearchorfiltering.2

スーパーグローバル入力を消毒することにより、共通の脆弱性を緩和します スーパーグローバル入力を消毒することにより、共通の脆弱性を緩和します Aug 03, 2025 am 10:33 AM

AlwityValidateandSanitizeSuperglobalinputsusingfunctionslikefilter_input()orfilter_var()onfilter_var()toensureateTsexcreatiaandsisfreeofmaliciouscontent.2.useprepStatementementementementementementementementementementementementementementementementementementized databaseoperation -operation -operation -operation -operteration -opreventsepreventreventreventrevented ev

ステートフルなWebアプリケーション:$ _Sessionと$ _Cookieを備えた高度なセッション管理 ステートフルなWebアプリケーション:$ _Sessionと$ _Cookieを備えた高度なセッション管理 Aug 06, 2025 pm 04:29 PM

$ _Sessionと$ _Cookieは、PHPでWebアプリケーションの状態管理を実装するためのコアメカニズムです。 1。$ _Sessionはサーバーを介してユーザーデータを保存し、ユーザーのステータスを維持するために一意のセッションID(通常はPhpsessIDという名前のCookieに保存されている)に依存しています。初期化するには、session_start()を呼び出す必要があります。これには、データセキュリティが高くなります。 2。$ _Cookieクライアント側に少量のデータを保存します。これは、ログインステータス、ユーザー設定、またはセッションの再接続に使用できます。 3.セキュリティプラクティスには、セッション固定攻撃を防ぐためにログインした後のセッション_REGENERETE_ID(true)の呼び出し、安全なCookieパラメーター(Secure、Hなど)の設定が含まれます。

Webリクエストの解剖学:SuperGlobalsがHTTPプロトコルにどのようにマップするか Webリクエストの解剖学:SuperGlobalsがHTTPプロトコルにどのようにマップするか Aug 04, 2025 pm 12:40 PM

$ _get、$ _post、$ _serverなどのPHPハイパーグローバル変数は、HTTP要求の各部分を直接マッピングします。 2。$ _POSTプロセスは、ユーザー名やパスワードなど、POST要求本体にデータを形成します。データはURLに含まれておらず、大量の送信できますが、セキュリティを確保するためにHTTPSが必要です。 3。$ _Serverには、request_methodがHTTPメソッド、http_hなどのリクエストメタデータが含まれています。

$ globalsアレイvs.「グローバル」キーワード:パフォーマンスとスコープ分析 $ globalsアレイvs.「グローバル」キーワード:パフォーマンスとスコープ分析 Aug 05, 2025 pm 06:24 PM

globalkeywordisslyfasterthan $ globalsduetodirectsymboltablebinding、buttheperformancedifferenceisnegligible in mostapplications.2。$ globalsprovidesdirectacestotheglobalbalsyblaltabletable andallowsunsettinggloblariabliablersunctionsは

「Register_Globals」から機能をフィルタリングする:スーパーグローバルセキュリティの進化 「Register_Globals」から機能をフィルタリングする:スーパーグローバルセキュリティの進化 Aug 05, 2025 am 04:40 AM

thedeprecation of of register_globalsandtheadoption fulterfunctions markedapivotalsphp’ssecurityevolution; 1.register_globalswaswasremoveddueToitsvulnerabilityは、攻撃を許可します

PHP SuperGlobalsのマスター:グローバルな範囲に深く飛び込みます PHP SuperGlobalsのマスター:グローバルな範囲に深く飛び込みます Aug 06, 2025 pm 04:36 PM

superglobalsinpherppareprededined、常に利用可能、variabresthatholddatafromuserinput、serverenvironment、sessions、andmore、accessible in withoutdeclaration.themainsuperglobalsare:$

See all articles