現在の位置: ホーム> 最新記事一覧> PHP関数を使用してユーザー入力を検出およびフィルタリングする方法は?

PHP関数を使用してユーザー入力を検出およびフィルタリングする方法は?

M66 2025-06-07

PHP関数を使用してユーザー入力を検出およびフィルタリングする方法は?

ユーザーが入力したデータは、Webサイトやアプリケーションを開発する際に避けられません。ただし、未加工の入力には悪意のあるスクリプトまたは特殊文字が含まれている場合があり、ウェブサイトのセキュリティに対する脅威をもたらします。データセキュリティを確保するには、ユーザー入力を検出およびフィルタリングするために、適切なPHP関数を使用する必要があります。

1.ユーザー入力の合法性を検出します

ユーザーデータを処理する前に、最初に入力が存在するかどうかを判断し、予想形式を満たします。一般的に使用される検出関数には次のものが含まれます。

  • ISSET() :変数が設定されていて空でないかどうかを検出します。
  • empty() :変数が空であるかどうかを検出します。多くの場合、 TRIM()と組み合わせて使用​​して、前面と背面スペースを削除します。
  • is_numeric() :変数が数字であるかどうかを決定します。

サンプルコード:

 if (isset($_POST['username']) && !empty(trim($_POST['username']))) {
    $username = $_POST['username'];
    // ユーザー名は存在し、空ではありません,処理を続けます
} else {
    // ユーザー名は空です,プロンプトエラー
}
<p>if (isset($_POST['age']) && is_numeric($_POST['age'])) {<br>
$age = $_POST['age'];<br>
// 年齢は数です,処理を続けます<br>
} else {<br>
// 年齢は空またはフォーマットされています,プロンプトエラー<br>
}

2.ユーザー入力をフィルターして、悪意のある攻撃を防ぎます

検出では十分ではなく、クロスサイトスクリプト(XSS)およびその他の攻撃を防ぐためにユーザー入力をフィルタリングする必要があります。一般的に使用されるフィルタリング関数は次のとおりです。

  • htmlspecialchars() :HTMLタグが解析されるのを防ぐために、 <>&&などの特殊文字を逃がします。
  • strip_tags() :文字列からのhtmlとphpタグをストリップします。
  • filter_var() :内蔵フィルターを組み合わせて、メールボックス形式の確認などのデータを検証およびフィルタリングします。

サンプルコード:

 $username = htmlspecialchars($_POST['username']); // 特殊文字を逃がします
$bio = strip_tags($_POST['bio']); // 取り除くHTMLそしてPHPラベル
$email = $_POST['email'];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    // 正しい電子メール形式,処理を続けます
} else {
    // 電子メール形式が正しくありません,プロンプトエラー
}

3.データベースクエリを安全に処理します

データベースクエリのユーザー入力データの場合、SQLインジェクション攻撃を防ぐ必要があります。前処理ステートメントと結合パラメーターを使用することをお勧めします。

 // データベースが接続されていると仮定します
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bindParam(1, $username, PDO::PARAM_STR);
$stmt->execute();

前処理ステートメントを通じて、ユーザーの入力はSQLステートメントを直接埋め込まないため、注入リスクを回避します。

要約します

ユーザーの入力を完全に信頼することはできず、PHPが提供する検出およびフィルタリング機能を開発に使用して、データセキュリティを確保する必要があります。入力合法性の合理的な検出、悪意のある文字のフィルタリング、安全なデータベース操作方法の組み合わせは、ウェブサイトのセキュリティを効果的に改善し、ユーザーのプライバシーとデータセキュリティを保護することができます。