ホームページ > バックエンド開発 > PHPチュートリアル > PHP 入力検証への正しいアプローチ

PHP 入力検証への正しいアプローチ

王林
リリース: 2024-05-05 08:12:01
オリジナル
670 人が閲覧しました

PHP 入力検証方法: PHP 組み込み関数 (filter_var、preg_match) を使用する、正規表現を使用する (パスワード強度の検証など)、ホワイトリストまたはブラックリストを使用する (特定の入力値を制限または禁止する)

PHP 输入验证的正确做法

PHP 入力検証の適切な実践

入力検証は、悪意のある入力や無効な入力によるアプリケーションへの損傷を防ぐため、Web アプリケーションでは非常に重要です。 PHP には、入力を効率的に検証するためのさまざまな組み込み関数とテクニックが用意されています。

1. PHP 組み込み関数を使用する

PHP には、入力をフィルタリングおよび検証するための便利な組み込み関数がいくつかあります。例:

// 过滤用户输入中的 HTML 标记
$filtered_input = filter_var($_POST['input'], FILTER_SANITIZE_SPECIAL_CHARS);

// 验证电子邮件地址
$is_email_valid = filter_var($_GET['email'], FILTER_VALIDATE_EMAIL);
ログイン後にコピー

2. 正規表現を使用する

正規表現は、複雑な入力を検証するために使用できる強力なパターンです。正規表現を使用してパスワードの強度を検証する方法は次のとおりです:

function validate_password($password) {
  $regex = '/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{8,}$/';
  return preg_match($regex, $password);
}
ログイン後にコピー

3. ホワイトリストまたはブラックリストを使用します

入力に明示的な許可または禁止の値がある場合、検証を行うことができます。ホワイトリストまたはブラックリストを使用して行われます。

ホワイトリスト: 特定の値のみを通過させます。たとえば、次のコードでは、特定の果物の入力のみが許可されます:

$allowed_fruits = array('apple', 'banana', 'orange');
if (in_array($_GET['fruit'], $allowed_fruits)) {
  // 输入有效
}
ログイン後にコピー

Blacklist: 特定の値を渡すことは許可されません。たとえば、次のコードは、特定のキーワードを含む入力を禁止します。

$disallowed_keywords = array('spam', 'malware', 'virus');
if (stripos($_POST['comment'], $disallowed_keywords) !== false) {
  // 输入无效
}
ログイン後にコピー

実用的なケース: ユーザー登録フォーム

以下は、ユーザー登録フォームのコード例です。 PHP 入力検証の使用方法:

<?php
// 验证用户输入
$errors = array();

if (empty($_POST['username'])) {
  $errors[] = '用户名不能为空';
}

if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
  $errors[] = '无效的电子邮件地址';
}

if (!validate_password($_POST['password'])) {
  $errors[] = '密码强度不足';
}

// 处理已验证的输入
if (empty($errors)) {
  // 注册用户
}
?>
ログイン後にコピー

これらの実践に従うことで、ユーザー入力を効果的に検証し、アプリケーションのセキュリティと整合性を確保できます。

以上がPHP 入力検証への正しいアプローチの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート