ホームページ  >  記事  >  バックエンド開発  >  一般的な特殊文字を検証するための PHP 正規表現

一般的な特殊文字を検証するための PHP 正規表現

WBOY
WBOYオリジナル
2023-06-24 11:11:511489ブラウズ

PHP 正規表現検証で一般的に使用される特殊文字

プログラミングでは、ユーザーが入力したデータを検証する必要があることがよくあります。 PHP では、正規表現を使用してこのニーズを簡単に満たすことができます。ただし、ユーザーが入力するデータは多岐にわたるため、データの有効性とセキュリティを確保するために特殊文字の検証に特別な注意を払う必要がある場合があります。

特殊文字の範囲は非常に広く、HTML タグ、URL アドレス、XML タグ、SQL ステートメントなどはすべて特殊文字です。これらの文字はプログラムの実行に影響を与えたり、不適切に悪用されてセキュリティ上の脆弱性を引き起こしたりする可能性があります。したがって、一般的に使用される特殊文字を理解し、検証のために PHP 正規表現を使用する必要があります。

  1. HTML タグ

HTML タグは、Web ページに不可欠な要素です。ただし、適切にフィルタリングされていない場合、これらのタグは攻撃に悪用される可能性もあります。 PHP 正規表現を使用して、HTML タグを検証およびサニタイズできます。たとえば、次の正規表現では、HTML タグが含まれているかどうかを確認できます。

if (preg_match('/<(.*)>.*</>|<(.*) />/', $string)) {
    echo "包含HTML标记";
} else {
    echo "没有包含HTML标记";
}

上記の正規表現では、 は、正規表現 の最初のかっこ内の一致を表します。 は、2 番目の括弧内の一致を示します。

  1. 英数字

英数字は、文字と数字の文字列です。一部のシナリオでは、英数字のみが許可されます。この場合、検証に次の正規表現を使用できます:

if (preg_match('/^[a-zA-Z0-9]+$/', $string)) {
    echo "是字母数字字符";
} else {
    echo "不是字母数字字符";
}

上記の正規表現では、^ は文字列の先頭を表します。 . $ は文字列の終わりを表し、[a-zA-Z0-9] は任意の文字または数字との一致を表します。

  1. URL アドレス

アプリケーションでは、ユーザーが入力した URL アドレスを確認する必要があることがよくあります。次の正規表現を使用して、URL アドレスの形式を確認します。

if (preg_match('/^http://[a-zA-Z0-9-.]+.[a-zA-Z]{2,3}(/S*)?$/', $url)) {
    echo "URL地址格式正确";
} else {
    echo "URL地址格式错误";
}

上記の正規表現では、^ は文字列の先頭を表し、$ は文字列の先頭を表します。文字列の末尾。 ; http:// は、「http://」で始まる文字列と一致することを意味します。 [a-zA-Z0-9-.] は、任意の文字列と一致することを意味します文字、数字、水平線またはピリオド。数字は少なくとも 1 です。[a-zA-Z]{2,3} は、任意の 2 つまたは 3 つの文字と一致することを意味します。(/S* )? は、スラッシュの後に空でない任意の数の文字が続くことを意味します。この部分はオプションです。

  1. XML タグ

XML ドキュメントでは、タグとそのコンテンツは特定の形式で表現されます。次の正規表現を使用して、XML タグの形式が正しいかどうかを確認します。

if (preg_match('/^<([^/]+?)>.*</>$/', $xml)) {
    echo "XML标签格式正确";
} else {
    echo "XML标签格式错误";
}

上記の正規表現では、^ は文字列の先頭を表し、$ は最後の文字列を表し、2bfa29ffc2c82b635ad7f03dc7faae9a はスラッシュ以外の文字と一致することを意味し、括弧はこの部分を最初の一致として取得して記録することを意味します。 #.* は任意の数の文字と一致することを意味し、0468589710c60a96e6cf456cf4fedd26 は最初に一致した文字列と一致することを意味します。

    SQL インジェクション攻撃
SQL インジェクション攻撃は、一般的なネットワーク攻撃手法であり、攻撃者はアプリケーションに SQL ステートメントを挿入し、アプリケーションに悪意のある操作を実行させます。次の正規表現を使用してユーザー入力データをフィルタリングし、SQL インジェクション攻撃を防ぎます。

function filter_sql($string) {
    // 去除SQL关键字
    $string = preg_replace('/(SELECT|UPDATE|DELETE|DROP|INSERT|ALTER)/i', "", $string);

    // 去除单引号
    $string = str_replace("'", "", $string);

    return $string;
}

上記の正規表現では、

は単語の境界を表し、(SELECT|UPDATE| DELETE) |DROP|INSERT|ALTER) はこれらのキーワードと一致することを意味し、i は大文字と小文字を区別しないことを意味します。

アプリケーションを作成するときは、データの多様性とセキュリティを考慮する必要があり、ユーザーが入力したデータを検証し、クリーンアップするために PHP 正規表現を使用することが非常に重要です。上記の例を通して、PHP 正規表現は非常に強力かつ柔軟で、さまざまなシナリオに適用でき、アプリケーションのセキュリティと信頼性の確保に役立つことがわかります。

以上が一般的な特殊文字を検証するための PHP 正規表現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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