ホームページ バックエンド開発 PHPチュートリアル PHP セーフ コーディングの原則: filter_var 関数を使用してユーザー入力をフィルタリングしてエスケープする方法

PHP セーフ コーディングの原則: filter_var 関数を使用してユーザー入力をフィルタリングしてエスケープする方法

Aug 02, 2023 pm 02:42 PM
セキュアコーディング ユーザー入力 フィルター変数関数

PHP セキュア コーディングの原則: filter_var 関数を使用してユーザー入力をフィルタリングおよびエスケープする方法

はじめに:
Web アプリケーションを開発する場合、セキュリティは重要な要素です。ユーザー入力のフィルタリングとエスケープは、SQL インジェクション、クロスサイト スクリプティング攻撃、その他のセキュリティ脆弱性を防ぐための重要な手順です。 PHP では、filter_var 関数を使用して、ユーザー入力のフィルタリングとエスケープを簡単に実現できます。この記事では、filter_var 関数を適切に使用して PHP アプリケーションを保護する方法を説明します。

  1. filter_var 関数とは何ですか?
    filter_var 関数は、PHP の強力なフィルタリング関数であり、さまざまな種類のデータをフィルタリングおよび検証するために使用されます。さまざまなフィルターを使用することで、ユーザーが入力したデータをフィルターして検証し、そのセキュリティを確保できます。
  2. ユーザー入力のフィルタリング
    ユーザー入力のフィルタリングは、Web アプリケーションを保護するための重要な手順です。ユーザー入力を受信した場合は、悪意のあるコードや文字の可能性があるものを除外する必要があります。一般的に使用されるフィルターとサンプル コードをいくつか示します。

a) FILTER_SANITIZE_STRING: 文字列内の HTML タグと PHP タグをフィルターします。

$input = "<script> alert('XSS attack!') </script>"
$clean_input = filter_var($input, FILTER_SANITIZE_STRING);
echo $clean_input; // 输出:alert('XSS attack!')
ログイン後にコピー

b) FILTER_SANITIZE_EMAIL: 文字列内の文字、数字、@ を除くすべての文字を削除します。

$email = "john.doe@example.com";
$clean_email = filter_var($email, FILTER_SANITIZE_EMAIL);
echo $clean_email; // 输出:john.doe@example.com
ログイン後にコピー

c) FILTER_SANITIZE_URL: 文字、数字、:/.?=& を除く文字列内のすべての文字を削除します。

$url = "http://example.com/?q=test";
$clean_url = filter_var($url, FILTER_SANITIZE_URL);
echo $clean_url; // 输出:http://example.com/?q=test
ログイン後にコピー
  1. ユーザー入力をエスケープする
    ユーザー入力をフィルタリングすることに加えて、クロスサイト スクリプティング攻撃を防ぐためにユーザー入力をエスケープする必要もあります。以下に、一般的に使用されるエスケープ関数とサンプル コードを示します。

a) htmlspecialchars 関数: 特殊文字を HTML エンティティに変換します。

$input = "<script> alert('XSS attack!') </script>";
$escaped_input = htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
echo $escaped_input; // 输出:<script> alert('XSS attack!') </script>
ログイン後にコピー

b)addslashes 関数: 文字列内の特定の文字の前にバックスラッシュを追加します。

$input = "It's a beautiful day!";
$escaped_input = addslashes($input);
echo $escaped_input; // 输出:It's a beautiful day!
ログイン後にコピー
  1. ユーザー入力のフィルタリングとエスケープの包括的な適用
    実際の開発では、通常、ユーザー入力のフィルタリングとエスケープの方法を包括的に適用する必要があります。以下は、包括的なアプリケーションのサンプル コードです:
$username = $_POST['username'];
$password = $_POST['password'];

$clean_username = filter_var($username, FILTER_SANITIZE_STRING);
$clean_password = addslashes($password);

// 在数据库查询前使用转义后的数据
$query = "SELECT * FROM users WHERE username='$clean_username' AND password='$clean_password'";
ログイン後にコピー

概要:
filter_var 関数を使用すると、ユーザー入力を簡単かつ効果的にフィルタリングして回避できるため、Web アプリケーションのセキュリティが向上します。 。ユーザー入力を処理するときは、SQL インジェクション、XSS、およびその他の一般的なセキュリティ脆弱性を防ぐために、常にフィルタリングおよびエスケープ方法を使用する必要があります。

実際の開発では、ユーザー入力のフィルタリングとエスケープはアプリケーションを保護するための防御の最前線にすぎないことに注意してください。入力検証、準備されたステートメントの使用など、他のセキュリティ対策も使用する必要があります。複数のセキュリティ対策を組み合わせて適用することによってのみ、アプリケーションの安全性を可能な限り確保することができます。

詳細情報:

  • [PHP: filter_var 関数](https://www.php.net/manual/zh/function.filter-var.php)
  • [PHP: htmlspecialchars 関数](https://www.php.net/manual/zh/function.htmlspecialchars.php)
  • [PHP: addlashes 関数](https://www.php .net/manual/zh/function.addslashes.php)

以上がPHP セーフ コーディングの原則: filter_var 関数を使用してユーザー入力をフィルタリングしてエスケープする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Pythonでユーザー入力から文字列を取得するにはどうすればよいですか? Pythonでユーザー入力から文字列を取得するにはどうすればよいですか? Aug 22, 2023 pm 06:01 PM

Pythonでユーザー入力から文字列を取得するにはどうすればよいですか?

Scanner クラスの findInLine() メソッドを使用して、ユーザー入力内の指定された文字列を検索する方法 Scanner クラスの findInLine() メソッドを使用して、ユーザー入力内の指定された文字列を検索する方法 Jul 24, 2023 am 09:23 AM

Scanner クラスの findInLine() メソッドを使用して、ユーザー入力内の指定された文字列を検索する方法

関数の要塞: PHP 関数セキュリティの要塞の詳細 関数の要塞: PHP 関数セキュリティの要塞の詳細 Mar 02, 2024 pm 09:28 PM

関数の要塞: PHP 関数セキュリティの要塞の詳細

PHP 言語開発で XSS 攻撃を回避するにはどうすればよいですか? PHP 言語開発で XSS 攻撃を回避するにはどうすればよいですか? Jun 10, 2023 pm 04:18 PM

PHP 言語開発で XSS 攻撃を回避するにはどうすればよいですか?

PHP データ フィルタリングのヒント: filter_var 関数を使用してユーザー入力を検証する方法 PHP データ フィルタリングのヒント: filter_var 関数を使用してユーザー入力を検証する方法 Jul 31, 2023 pm 08:05 PM

PHP データ フィルタリングのヒント: filter_var 関数を使用してユーザー入力を検証する方法

Golang 言語の機能が明らかに: 安全なコーディングと脆弱性の防止 Golang 言語の機能が明らかに: 安全なコーディングと脆弱性の防止 Jul 17, 2023 am 11:21 AM

Golang 言語の機能が明らかに: 安全なコーディングと脆弱性の防止

Scanner クラスの nextDouble() メソッドを使用してユーザー入力から浮動小数点数を読み取る方法 Scanner クラスの nextDouble() メソッドを使用してユーザー入力から浮動小数点数を読み取る方法 Jul 24, 2023 pm 08:27 PM

Scanner クラスの nextDouble() メソッドを使用してユーザー入力から浮動小数点数を読み取る方法

ユーザー入力を取得する方法: PHP fgets() 関数の詳細な説明 ユーザー入力を取得する方法: PHP fgets() 関数の詳細な説明 Jun 27, 2023 am 09:03 AM

ユーザー入力を取得する方法: PHP fgets() 関数の詳細な説明

See all articles