ホームページ  >  記事  >  バックエンド開発  >  ファイルパスとファイル名の正当性を検証するためのPHP正規表現

ファイルパスとファイル名の正当性を検証するためのPHP正規表現

王林
王林オリジナル
2023-06-24 08:58:362839ブラウズ

Web プロジェクトを開発するとき、アップロードされたファイルを処理する必要があることがよくあります。ファイルをアップロードするときは、ファイル パスとファイル名の正当性を確認する必要があります。 PHP では、正規表現を使用してファイル パスとファイル名を検証できます。この記事では、正規表現を使用してファイル パスとファイル名の正当性を検証する方法を紹介します。

1. ファイル パスの正当性の検証

ファイル パスは、コンピュータ ファイル システム内のファイルのパス記述を指し、絶対パスまたは相対パスを使用できます。 PHP では、一般的なファイル パスは次のようになります。

$filePath = "/home/user/project/files/test.txt";

ファイル パスの正当性検証の主な目的は、ファイル パスの形式が正しいこと、および不正な文字が含まれていないことを確認することです。正規表現を使用してファイル パスを確認する方法は次のとおりです。

function validateFilePath($filePath) {
    $pattern = '/^([a-zA-Z]:)?(/[a-zA-Z0-9]+)+/?$/';
    return preg_match($pattern, $filePath);
}

上記の関数はファイル パスをパラメータとして受け取り、正規表現を使用して確認します。正規表現の意味は次のとおりです。

  • ^([a-zA-Z]:)?: C:、D などのオプションのドライブ識別子を表します。 :、など。
  • (/[a-zA-Z0-9] ) : ディレクトリ名を示します。「/」はディレクトリ区切り文字です。
  • /?$: オプションのディレクトリ区切り文字「/」を示します。

上記の関数を使用してファイル パスを確認し、ブール値を返します。ファイル パスが正当な場合は true を返し、そうでない場合は false を返します。

2. ファイル名の正当性の検証

ファイル名は、コンピュータのファイル システム内のファイルの名前を指し、特殊文字を除き、ファイル名には任意の文字を含めることができます。 PHP では、一般的なファイル名は次のようになります。

$fileName = "test_file.jpg";

ファイル名の正当性検証の主な目的は、悪意のあるファイル名攻撃を防止し、プロジェクトのセキュリティを保護することです。正規表現を使用してファイル名を確認する方法は次のとおりです。

function validateFileName($fileName) {
    $pattern = '/^[^-\:*?"<>|/]+$/';
    return preg_match($pattern, $fileName);
}

上記の関数はファイル名パラメータを受け取り、正規表現を使用して確認します。正規表現の意味は次のとおりです。

  • ^[^- \:*?"a8093152e673feb7aba1828c43532094|/] : 制御文字が含まれていないことを示します。 、区切り文字、特殊文字 文字ファイル名
  • $: 終了文字を示します

上記の関数を使用してファイル名を確認し、ブール値を返しますファイル名が正当な場合は true を返し、それ以外の場合は false を返します

3. 包括的な検証

実際の開発では、通常、ファイル パスとファイル パスを包括的に検証する必要があります。ファイル パスとファイル名の正規規則式包括的検証関数は次のとおりです:

function validateFilePathAndName($filePath, $fileName) {
    $pattern = '/^([a-zA-Z]:)?(/[a-zA-Z0-9]+)+/?$/';
    if (!preg_match($pattern, $filePath)) {
        // 文件路径非法
        return false;
    }
    $pattern = '/^[^-\:*?"<>|/]+$/';
    if (!preg_match($pattern, $fileName)) {
        // 文件名非法
        return false;
    }
    return true;
}

上記の関数は、ファイル パスとファイル名をパラメータとして受け取り、最初に正規表現を使用してファイル パスを検証します。ファイル パスが不正な場合は、直接 false を返します。そうでない場合は、正規表現を使用してファイル名を確認します。ファイル名が不正な場合は、false を返します。それ以外の場合は、true を返し、ファイル パスとファイル名が正当であることを示します。

要約すると、正規表現を使用してファイル パスとファイルを確認します。名前の正当性は重要なセキュリティ対策です。実際の開発では、正規表現の文法規則をマスターし、正規表現を適切に使用する必要があります。合法性の検証。

以上がファイルパスとファイル名の正当性を検証するためのPHP正規表現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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