ホームページ バックエンド開発 PHPチュートリアル PHPデータフィルタリング方法_PHPチュートリアル

PHPデータフィルタリング方法_PHPチュートリアル

Jul 13, 2016 am 10:25 AM
php

ガイドの冒頭で、データ フィルタリングは、あらゆる言語およびプラットフォームにおける WEB アプリケーション セキュリティの基礎であると述べました。これには、アプリケーションへのデータ入力とアプリケーションからのデータ出力の検証が含まれます。優れたソフトウェア設計は、開発者が次のことを行うのに役立ちます。
データ フィルタリングが回避できないことを確認する、
違法な情報が正当な情報に影響を与えないことを確認する、
識別するデータのソース。
データ フィルタリングをバイパスできないようにする方法についてはさまざまな見解があり、そのうちの 2 つは他の見解よりも一般的であり、より高いレベルの保証を提供します。
スケジュール方法
この方法は、単一の PHP スクリプト (URL 経由) でスケジュールされます。他の操作は、必要に応じて include または require を使用して含められます。このアプローチでは通常、各 URL にディスパッチ用の個別の GET 変数を渡す必要があります。この GET 変数は、スクリプト名を置き換えるより単純化された設計と考えることができます。例:
http://a.org/dispatch.php?task=PRint_formdispatch.php は唯一のルート ファイル (ドキュメント ルート) です。これにより、開発者は 2 つの非常に重要な作業を行うことができます:
dispatch.php の先頭にいくつかのグローバル セキュリティ処理を実装し、これらの処理がバイパスできないようにします。
特に一部の特殊な目的の制御フロー操作において、データ フィルタリングを実行する必要がある場所を簡単に判断できます。
dispatch.php スクリプトの詳細については、次の例を参照してください:
これが公的にアクセス可能な唯一の PHP スクリプトである場合は、次のことを確認してください。このプログラムの設計により、最初のグローバル セキュリティ処理がバイパスできないことが保証されているということです。また、開発者は特定のタスクの制御フローを簡単に確認できます。たとえば、コード全体を閲覧しなくても簡単にわかります。$form_valid が true の場合、end.inc は process.inc がインクルードされる前であり、false に初期化されたばかりであるため、ユーザーに表示される唯一のものです。 process.inc の内部ロジックによって true に設定されると判断できます。それ以外の場合は、フォームが再度表示されます (関連するエラー メッセージが表示される可能性があります)。
注意
(dispatch.php ではなく)index.php などのディレクトリ指定のファイルを使用する場合は、http://a.org/?task=print_form のような URL アドレスを使用できます。
ApacheForceType リダイレクトまたは mod_rewrite を使用して、URL アドレス http://a.org/app/print-form を調整することもできます。
含まれるメソッド
もう 1 つの方法は、すべてのセキュリティ処理を担当する単一のモジュールを使用することです。このモジュールは、すべてのパブリック PHP スクリプトの先頭 (または最先頭) に含まれています。次のスクリプトを参照してください security.inc

コードをコピーします コードは次のとおりです:



この例では、送信された各フォームには一意の検証値フォームが含まれているとみなされ、security.inc は必要なフォームのデータを個別に処理します。フィルタリングされる。この要件を実装する HTML フォームは次のとおりです:
コードをコピーします コードは次のとおりです:

ユーザー名:

パスワード:



$allowed という配列はチェックに使用されますどのフォーム変数が許可されるか、このリストはフォームが処理される前に一貫している必要があります。プロセス制御は何を実行するかを決定し、実際のフィルター処理されたデータは process.inc に到着します。
注意
security.inc が常にすべてのスクリプトの先頭に含まれるようにするより良い方法は、auto_prepend_file 設定を使用することです。
フィルタリングの例
ホワイトリストの確立はデータフィルタリングにとって非常に重要です。遭遇する可能性のあるすべてのタイプのフォーム データの例を示すことは不可能であるため、いくつかの例は一般的な理解を助けることができます。
次のコードはメール アドレスを検証します:
コードをコピーします コードは次のとおりです:



次のコードは、$_POST['color'] の内容が赤、緑、または青であることを確認します:
コードをコピーします コードは次のとおりです:

[/code]
次のコードは、$_POST['num'] が整数であることを確認します。
[code]


以下のコード$_POST['num'] が float であることを確認します:
コードをコピーします コードは次のとおりです:



名前変換
前の各例で使用した配列$クリーン。これは、開発者がデータが侵害される可能性があるかどうかを判断するための良い方法です。 データを検証した後は、決して $_POST または $_GET にデータを保存しないでください。開発者は、スーパー グローバル配列に保存されたデータを常に完全に疑う必要があります。
$clean を使用すると、フィルタリングされていないものについて考えるのに役立ち、ホワイトリストの役割に似ていることを付け加えておきます。セキュリティレベルを向上させることができます。
検証済みのデータを $clean に保存するだけの場合、データ検証における唯一のリスクは、フィルターされていない危険なデータではなく、参照する配列要素が存在しないことです。
タイミング
PHP スクリプトの実行が開始されると、すべての HTTP リクエストが終了したことになります。この時点では、ユーザーがスクリプトにデータを送信する機会はありません。したがって、(register_globals がオンになっている場合でも) スクリプトにデータを入力することはできません。このため、変数を初期化することは非常に良い方法です。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/824954.html技術記事ガイドの冒頭で、データ フィルタリングは、あらゆる言語およびプラットフォームにおける WEB アプリケーション セキュリティの基礎であると述べました。これには、アプリケーションへのデータ入力とアプリケーションからのデータ出力の検証が含まれます...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles