ホームページ >バックエンド開発 >PHPの問題 >PHPでフォーム送信メソッドを設定する方法

PHPでフォーム送信メソッドを設定する方法

PHPz
PHPzオリジナル
2023-04-21 09:07:421009ブラウズ

PHP は、Web 開発で広く使用されている人気のスクリプト言語です。 Web ページ上でユーザー入力情報を収集する必要がある場合は、フォームを使用するのが良い選択です。 PHP でフォームを使用してデータを送信する場合、データを正しく受信して処理できるようにいくつかの設定を行う必要があります。

この記事では、PHP でフォーム送信メソッドを設定し、フォーム データを取得し、フォーム攻撃を防ぐ方法に焦点を当てます。

  1. フォーム送信方法の設定

HTML では、フォームを送信する一般的な方法が 2 つあります: get と post。 get メソッドはフォーム データを URL に追加し、post メソッドはデータをカプセル化して HTTP リクエストのメッセージ本文に含めて送信します。 PHP では、$_GET および $_POST スーパーグローバル変数を通じてフォーム データにアクセスできるため、さまざまなフォーム送信方法に応じて対応する設定を行う必要があります。

ユーザーのユーザー名とパスワードを収集する簡単なフォームの例を次に示します:

<form action="login.php" method="post">
    <label for="username">用户名:</label>
    <input type="text" id="username" name="username"><br>
    <label for="password">密码:</label>
    <input type="password" id="password" name="password"><br>
    <input type="submit" value="登录">
</form>

このフォームでは、post メソッドを使用してデータを login.php ページに送信します。 login.php では、フォームに入力されたユーザー名とパスワードには、$_POST['username'] および $_POST['password'] を介してアクセスできます。

フォームを送信する場合は、セキュリティに注意する必要があります。post メソッドを使用すると、データを HTTP リクエストのメッセージ本文にカプセル化できるため、get メソッドよりも安全です。したがって、機密情報を含むフォームを扱う場合は、post メソッドの使用を優先する必要があります。

  1. フォーム データの取得

PHP でフォーム データを取得するのは非常に簡単で、対応するスーパー グローバル変数を使用するだけです。フォーム送信メソッドが get の場合は $_GET スーパーグローバル変数を使用し、フォーム送信メソッドが post の場合は $_POST スーパーグローバル変数を使用します。

これは、PHP でフォーム データを取得する方法を示す簡単な例です:

$username = $_POST['username'];
$password = $_POST['password'];
echo "您输入的用户名是:".$username."<br>";
echo "您输入的密码是:".$password."<br>";

$_POST または $_GET を使用してフォーム データを取得するときは、常に isset を使用する必要があることに注意してください。 () 関数は、未定義変数エラーを避けるために変数が存在するかどうかを判断します。

さらに、安全でない外部データを使用する場合 (URL パラメータからデータを取得する場合など)、SQL インジェクションなどの攻撃を回避するためにセキュリティ チェックとフィルタリングが必要です。

  1. フォーム攻撃の防止

フォーム攻撃とは、フォーム送信を使用して Web サイトのデータを取得または改ざんする攻撃者の行為を指します。一般的なタイプのフォーム攻撃には、クロスサイト リクエスト フォージェリ (CSRF) や SQL インジェクションなどがあります。フォーム攻撃を防ぐには、適切なセキュリティ対策を講じる必要があります。

3.1 CSRF 攻撃の防止

CSRF 攻撃の原理は、攻撃者が他の Web サイトの被害者のログイン情報を使用して、ターゲット Web サイトへの POST リクエストを偽造し、さまざまな攻撃を実行することです。 CSRF 攻撃を防ぐために、次の対策を講じることができます。

(1) トークン検証を使用します。フォームの送信時に一意のトークンを生成し、セッション変数にトークンを格納します。フォームが送信されたら、トークンが一致することを確認し、一致しない場合はリクエストを拒否します。

(2) ソース URL の確認: フォームが送信されるときに、ソース URL がターゲット サイトと同じかどうかを確認します。異なる場合は、リクエストを拒否します。

3.2 SQL インジェクションの防止

SQL インジェクションとは、攻撃者が悪意のある SQL コードをフォームに入力して、データベースへの不正なアクセスを実現することを意味します。 SQL インジェクションを防ぐには、ユーザーが入力したデータをフィルタリングしてエスケープする必要があります。

以下は、mysqli_real_escape_string() 関数を使用してユーザー入力データをエスケープする方法を示す簡単な例です:

$username = mysqli_real_escape_string($conn, $_POST['username']);
$password = mysqli_real_escape_string($conn, $_POST['password']);

この例では、$conn はデータベース接続オブジェクト mysqli_real_escape_string( ) を表します。関数は入力文字列をエスケープするために使用されます。これにより、ユーザーが入力した悪意のあるコードがデータベースに影響を与えるのを防ぎます。

結論

フォームを使用してユーザー入力を収集することは、Web 開発では一般的な方法ですが、セキュリティと保護対策に注意を払う必要があります。 PHP でフォームデータを取得したり、送信方法を設定したりするのは比較的簡単ですが、未定義の変数やセキュリティ フィルタリングに注意する必要があります。フォーム攻撃を防ぐには、トークン検証や SQL フィルタリングなどの特定のセキュリティ対策が必要です。セキュリティと実際のニーズを十分に考慮することによってのみ、フォームの送信をより信頼性と安全なものにすることができます。

以上がPHPでフォーム送信メソッドを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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