現在の位置: ホーム> 最新記事一覧> PHPデータフィルタリング:ユーザー入力からデータベースへのセキュリティ

PHPデータフィルタリング:ユーザー入力からデータベースへのセキュリティ

M66 2025-06-07

PHPデータフィルタリング:ユーザー入力からデータベースへのセキュリティ

概要:
Web開発では、ユーザー入力データのセキュリティを確保することが重要です。フィルタリングされていない検証済みの入力は、SQLインジェクション、クロスサイトスクリプト攻撃(XSS)などのセキュリティリスクにつながる可能性があります。この記事では、ユーザー入力からデータベースストレージまでのプロセス全体のセキュリティを確保するために、データフィルタリングと検証にPHPを使用する方法を紹介します。

入力フィルタリング

ユーザーが送信したデータは信頼できるものではなく、最初にフィルタリングする必要があります。一般的な入力フィルタリング手法には以下が含まれます。

(1)HTMLエスケープ

XSS攻撃を防ぐには、ユーザー入力のHTMLタグを逃れる必要があります。 PHPビルトイン関数htmlspecialchars()はこの関数を実装できます。

 $input = $_POST['input'];
$filteredInput = htmlspecialchars($input);

(2)余分なスペースを取り外します

TRIM()関数を使用して、入力データの両端のスペースを削除します。これは、予期しないスペースによって引き起こされる問題を回避するのに役立ちます。

 $input = $_POST['input'];
$filteredInput = trim($input);

(3)特殊文字をフィルタリングします

入力に含まれる特殊文字によって引き起こされるコード実行の問題を回避するために、フィルタリングにFilter_Sanitize_Stringフィルターと併せてFilter_Var()関数を使用できます。

 $input = $_POST['input'];
$filteredInput = filter_var($input, FILTER_SANITIZE_STRING);

データを確認します

フィルタリングに加えて、入力データの合法性も必要です。一般的な検証方法は次のとおりです。

(1)電子メールを確認します

filter_validate_emailfilter_var()を使用して、メールアドレス形式を確認します。

 $email = $_POST['email'];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    // 法的メールアドレス
} else {
    // 違法なメールアドレス
}

(2)URLを確認します

また、 filter_validate_urlを使用してfilter_var()を使用して、URL形式を確認します。

 $url = $_POST['url'];
if (filter_var($url, FILTER_VALIDATE_URL)) {
    // URL正当な
} else {
    // URL違法
}

(3)番号を確認します

IS_NUMERIC()関数を使用して、入力が数字かどうかを確認します。

 $number = $_POST['number'];
if (is_numeric($number)) {
    // 数として入力
} else {
    // 非桁を入力します
}

データベースセキュリティ

ユーザーデータをデータベースに書き込む前に、セキュリティを確保するためにさらに処理が必要です。

(1)前処理ステートメントを使用します

プレースホルダーを介してパラメーターを渡す前処理ステートメントは、SQL注入を効果的に防止します。 PHPのPDOまたはMySQLI拡張機能は、このメカニズムをサポートしています。

 $db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$stmt = $db->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $email);
$name = $_POST['name'];
$email = $_POST['email'];
$stmt->execute();

(2)パスワードハッシュを使用します

ユーザーのパスワードを保存するときは、単純なテキストの保存を避け、ハッシュにpassword_hash()を使用します。

 $password = $_POST['password'];
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);

要約します

データセキュリティは、Web開発のコアリンクです。合理的な入力フィルタリング、検証、およびデータベースセキュリティ対策により、アプリケーション保護機能を効果的に改善し、潜在的なセキュリティリスクを回避できます。ユーザーデータのセキュリティを確保するために、特定のプロジェクトニーズに照らしてこれらのテクノロジーを柔軟に使用することをお勧めします。