1. PHP 送信データフィルタリングの基本原則
1) 変数をデータベースに送信するときは、フィルター処理にaddlashes()を使用する必要があります。たとえば、注入の問題は1つのaddslashes()で解決できます。実際、変数値に関しては、 intval() 関数も文字列のフィルタリングに適しています。
2) php.iniでmagic_quotes_gpcとmagic_quotes_runtimeを有効にします。 magic_quotes_gpc は、get、post、cookie の引用符をスラッシュに変更できます。 magic_quotes_runtime は、データベースに出入りするデータの書式設定の役割を果たします。実際、このパラメータは、インジェクションが夢中になっていた昔から非常に人気がありました。
3) システム関数を使用する場合は、安心してシステム関数を使用できるように、escapeshellarg()、escapeshellcmd() パラメータを使用してフィルタリングする必要があります。
4) クロスサイトの場合は、strip_tags() と htmlspecialchars() の 2 つのパラメータが良く、ユーザーが送信した html と php のタグが変換されます。たとえば、山括弧「<」は「<」などの無害な文字に変換されます。
コードは次のとおりです | |||||||||||||||||||||||||||||||
$new = htmlspecialchars("テスト", ENT_QUOTES); ストリップタグ($text,); 5) 関連する関数のフィルタリングについては、先ほどの include()、unlink、fopen() などと同様に、操作したい変数を指定するか、関連する文字を厳密にフィルタリングすればよいと思います。完璧になります。 2. PHPによる簡単なデータフィルタリング 1)ストレージ:trim($str),addslashes($str) 2) 出力:stripslashes($str) 3) 表示: htmlspecialchars(nl2br($str)) dispatch.php スクリプトの詳細については、以下の例を参照してください:
これが公的にアクセス可能な唯一の PHP スクリプトである場合、そのプログラムは、最初のグローバル セキュリティ処理がバイパスできないように設計されていると確信できます。また、開発者は特定のタスクの制御フローを簡単に確認できます。たとえば、コード全体を閲覧しなくても簡単にわかります。$form_valid が true の場合、end.inc は process.inc がインクルードされる前であり、false に初期化されたばかりであるため、ユーザーに表示される唯一のものです。 process.inc の内部ロジックによって true に設定されると判断できます。それ以外の場合は、フォームが再度表示されます (関連するエラー メッセージが表示される可能性があります)。 注意 (dispatch.php ではなく)index.php などのディレクトリ指定のファイルを使用する場合は、http://example.org/?task=print_form のように URL アドレスを使用できます。 ApacheForceType リダイレクトまたは mod_rewrite を使用して、URL アドレス http://example.org/app/print-form を調整することもできます。 メソッドが含まれます もう 1 つの方法は、すべてのセキュリティ処理を担当する単一のモジュールを使用することです。このモジュールは、すべてのパブリック PHP スクリプトの先頭 (または最先頭) に含まれています。以下の security.inc スクリプトを参照してください
この例では、送信された各フォームには一意の検証値フォームが含まれているとみなされ、security.inc はフィルタリングが必要なフォーム内のデータを独立して処理します。この要件を実装する HTML フォームは次のようになります:
$allowed という配列は、フォームが処理される前に、どのフォーム変数が許可されているかを確認するために使用されます。プロセス制御は何を実行するかを決定し、実際のフィルター処理されたデータは process.inc に到着します。 注意 security.inc が常にすべてのスクリプトの先頭に含まれるようにするより良い方法は、auto_prepend_file 設定を使用することです。 フィルタリングの例 ホワイトリストの確立はデータフィルタリングにとって非常に重要です。遭遇する可能性のあるすべてのフォーム データの例を示すことは不可能なので、いくつかの例は一般的な理解を得るのに役立ちます。 次のコードは電子メール アドレスを検証します:
次のコードは、$_POST['color'] の内容が赤、緑、または青であることを確認します。
前の記事:PHP 関数 call_user_func および call_user_func_array_PHP チュートリアルの使用法の詳細な説明
次の記事:PHP_PHP チュートリアルの 10 のあまり知られていない関数
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
URL パラメータから取得した PHP 配列が期待どおりに動作しない
カテゴリ ID を含む URL パラメータがあり、それを次のような配列として扱いたいと考えています: http://example.com?cat[]=3,9,13 PHP では、...
から 2024-04-06 22:09:02
0
1
1428
戻り値の変数の形式は何ですか?
私はphpの初心者です。コードを見つけました: if($x<time()){return[false,'error'];} ロジックや変数は重要ではありませんが、[false...
から 2024-04-06 21:55:20
0
1
778
ループするために MySQL の結果を ID ごとにグループ化する
mysqlにフライトデータを含むテーブルがあります。 codeigniter3Journey_idair_idFlightDurationout_or_inflightdurati...
から 2024-04-06 17:27:56
0
1
406
関連トピック
詳細>
|