ホームページ バックエンド開発 PHPチュートリアル PHP を使用して安全なフォーム検証を作成するにはどうすればよいですか?

PHP を使用して安全なフォーム検証を作成するにはどうすればよいですか?

Aug 26, 2023 pm 08:04 PM
プログラミング フォームの検証 PHPのセキュリティ

PHP を使用して安全なフォーム検証を作成するにはどうすればよいですか?

PHP を使用して安全なフォーム検証を作成するにはどうすればよいですか?

Web アプリケーションを開発する場合、フォームは重要なコンポーネントの 1 つです。フォームを通じてユーザーと対話し、ユーザーが入力したデータを取得できます。ただし、ユーザーが入力したデータは信頼できないことが多く、悪意のあるコードや悪意のある動作が含まれている可能性があります。したがって、アプリケーションのセキュリティを確保するには、ユーザー入力データを処理する前に検証およびフィルター処理する必要があります。この記事では、PHP を使用して安全なフォーム検証を記述する方法を紹介します。

  1. PHP フィルターを有効にする

PHP には、ユーザー入力データの検証とフィルター処理に使用できるいくつかの組み込みフィルターが用意されています。まず、PHP のフィルター機能がオンになっていることを確認する必要があります。 php.ini ファイル内で次のコード行を見つけて、コメントアウトされていないことを確認します。

;extension=filter
;extension=filter_xss
ログイン後にコピー

先行するセミコロンを削除してファイルを保存し、Web サーバーを再起動します。

  1. フォームのセットアップ

まず、フォームをセットアップし、フォーム ラベルと対応する入力フィールドを定義する必要があります。たとえば、ユーザー名、パスワード、電子メール アドレスのフィールドを含む登録フォームを作成します。

<form action="register.php" method="post">
    <label for="username">用户名:</label>
    <input type="text" name="username" id="username">

    <label for="password">密码:</label>
    <input type="password" name="password" id="password">

    <label for="email">邮箱:</label>
    <input type="email" name="email" id="email">

    <input type="submit" value="注册">
</form>
ログイン後にコピー
  1. 検証コードの記述

フォームを送信した後、次のことを行う必要があります。検証コードを書き込む ユーザー入力データを検証し、フィルタリングします。まず、フィルター関数 filter_input()filter_input_array() を使用して、ユーザー入力データを取得してフィルター処理します。

$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
$password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
ログイン後にコピー

上記のコードでは、filter_input() 関数は単一の入力フィールドをフィルターするために使用され、filter_input_array() 関数は複数の入力をフィルターするために使用されます。田畑。 FILTER_SANITIZE_STRING は文字列のフィルタリングに使用され、FILTER_SANITIZE_EMAIL は電子メール アドレスのフィルタリングに使用されます。

次に、正規表現を使用して、ユーザー名とパスワードに対して追加の検証を実行できます。たとえば、ユーザー名に文字、数字、アンダースコアのみが含まれており、長さが 3 ~ 20 文字であることを確認します。

$usernameRegex = '/^[a-zA-Z0-9_]{3,20}$/';
if (!preg_match($usernameRegex, $username)) {
    echo "用户名必须是3到20个字符的字母、数字或下划线组合";
    exit();
}
ログイン後にコピー

同様に、さらなる検証が必要な他のフィールドに対して正規表現検証を実行できます。

最後に、SQL インジェクション攻撃を防ぐために、ユーザー入力データをデータベースに保存する前に、適切なエスケープ関数を使用してデータをエスケープするようにしてください。たとえば、mysqli_real_escape_string() 関数を使用してデータをエスケープします。

$username = mysqli_real_escape_string($dbConnection, $username);
$password = mysqli_real_escape_string($dbConnection, $password);
$email = mysqli_real_escape_string($dbConnection, $email);
ログイン後にコピー

上記のコードでは、$dbConnection がデータベース接続オブジェクトです。

  1. エラー処理

フォーム検証プロセス中に、ユーザー名が使用されている、パスワードが弱すぎるなど、いくつかのエラーが発生する可能性があります。このような状況では、対応するエラー プロンプトを提供する必要があります。検証コードでは、$errors 配列を使用してエラー メッセージを保存し、これらのエラー メッセージを次の形式で表示します。

$errors = array();

// 验证用户名是否已经被占用
if (usernameExists($username)) {
    $errors['username'] = "用户名已经被占用";
}

// 验证密码强度
if (isWeakPassword($password)) {
    $errors['password'] = "密码过弱";
}

// 显示错误信息
if (!empty($errors)) {
    foreach ($errors as $error) {
        echo $error . "<br>";
    }
}
ログイン後にコピー

上記のコードでは、usernameExists()および isWeakPassword() は、ユーザー名が占有されているかどうか、およびパスワードが弱すぎるかどうかをチェックするために使用されるカスタム検証関数です。

要約すると、フォームを適切に設定し、安全な検証コードを記述することで、ユーザー入力データを効果的にフィルタリングして検証し、Web アプリケーションのセキュリティを向上させることができます。もちろん、フロントエンドの検証に加えて、プリペアドステートメントを使用してSQLインジェクションなどの攻撃を防ぐなど、バックエンドのセキュリティ対策も不可欠です。

上記は、PHP を使用して安全なフォーム検証を作成する方法の紹介です。お役に立てば幸いです!

以上がPHP を使用して安全なフォーム検証を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 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衣類リムーバー

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)

正規表現を使用してPHP配列から重複した値を削除します 正規表現を使用してPHP配列から重複した値を削除します Apr 26, 2024 pm 04:33 PM

正規表現を使用して PHP 配列から重複値を削除する方法: 正規表現 /(.*)(.+)/i を使用して、重複値を照合して置換します。配列要素を反復処理し、preg_match を使用して一致をチェックします。一致する場合は値をスキップし、一致しない場合は重複値のない新しい配列に追加します。

セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? Apr 06, 2025 am 12:02 AM

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

プログラミングは何のためにあるのか、それを学ぶと何の役に立つのか? プログラミングは何のためにあるのか、それを学ぶと何の役に立つのか? Apr 28, 2024 pm 01:34 PM

1. プログラミングは、Web サイト、モバイル アプリケーション、ゲーム、データ分析ツールなど、さまざまなソフトウェアやアプリケーションの開発に使用できます。その応用分野は非常に幅広く、科学研究、医療、金融、教育、エンターテイメントなど、ほぼすべての業界をカバーしています。 2. プログラミングを学ぶことは、問題解決スキルと論理的思考スキルを向上させるのに役立ちます。プログラミング中、問題を分析して理解し、解決策を見つけてコードに変換する必要があります。この考え方は、分析能力と抽象能力を養い、実際的な問題を解決する能力を向上させることができます。

Python による問題解決: 初心者プログラマーとして強力なソリューションをアンロックする Python による問題解決: 初心者プログラマーとして強力なソリューションをアンロックする Oct 11, 2024 pm 08:58 PM

Python は、問題解決の初心者に力を与えます。ユーザーフレンドリーな構文、広範なライブラリ、変数、条件文、ループによる効率的なコード開発などの機能を備えています。データの管理からプログラム フローの制御、反復的なタスクの実行まで、Python が提供します

C++ プログラミング パズルのコレクション: 思考を刺激し、プログラミング スキルを向上させます C++ プログラミング パズルのコレクション: 思考を刺激し、プログラミング スキルを向上させます Jun 01, 2024 pm 10:26 PM

C++ プログラミング パズルは、フィボナッチ数列、階乗、ハミング距離、配列の最大値と最小値などのアルゴリズムとデータ構造の概念をカバーします。これらのパズルを解くことで、C++ の知識を強化し、アルゴリズムの理解とプログラミング スキルを向上させることができます。

PHP 開発におけるセキュリティの脆弱性と解決策 PHP 開発におけるセキュリティの脆弱性と解決策 May 09, 2024 pm 03:33 PM

PHP 開発におけるセキュリティの脆弱性と解決策 はじめに PHP は、Web 開発で広く使用されている人気のあるサーバーサイド スクリプト言語です。ただし、他のソフトウェアと同様に、PHP にもセキュリティ上の脆弱性がいくつかあります。この記事では、一般的な PHP セキュリティの脆弱性とその解決策について説明します。一般的な PHP セキュリティ脆弱性 SQL インジェクション: 攻撃者が Web フォームまたは URL に悪意のある SQL コードを入力することにより、データベース内のデータにアクセスしたり、データを変更したりすることができます。クロスサイト スクリプティング (XSS): 攻撃者がユーザーのブラウザで悪意のあるスクリプト コードを実行できるようにします。ファイルの内容: 攻撃者がリモート ファイルや機密ファイルをサーバーにロードして実行することを許可します。リモートコード実行 (RCE): 攻撃者が任意のコードを実行できるようにします。

内なるプログラマーを解き放つ: まったくの初心者のための C 内なるプログラマーを解き放つ: まったくの初心者のための C Oct 11, 2024 pm 03:50 PM

C は初心者がプログラミングを学ぶのに理想的な言語であり、効率性、汎用性、移植性などの利点があります。 C 言語の学習には次のことが必要です。 C コンパイラ (MinGW や Cygwin など) をインストールする 変数、データ型、条件文、ループ文を理解する main 関数と printf() 関数を含む最初のプログラムを作成する 実際のケースによる練習 (平均値の計算など) C言語の知識

コーディングの鍵: 初心者のための Python の力を解き放つ コーディングの鍵: 初心者のための Python の力を解き放つ Oct 11, 2024 pm 12:17 PM

Python は、学習の容易さと強力な機能により、初心者にとって理想的なプログラミング入門言語です。その基本は次のとおりです。 変数: データ (数値、文字列、リストなど) を保存するために使用されます。データ型: 変数内のデータの型 (整数、浮動小数点など) を定義します。演算子: 数学的な演算と比較に使用されます。制御フロー: コード実行のフロー (条件文、ループ) を制御します。

See all articles