>  기사  >  백엔드 개발  >  파일 경로 및 파일 이름의 합법성을 확인하는 PHP 정규식

파일 경로 및 파일 이름의 합법성을 확인하는 PHP 정규식

王林
王林원래의
2023-06-24 08:58:362748검색

웹 프로젝트를 개발하다 보면 업로드된 파일을 처리해야 하는 경우가 많습니다. 파일을 업로드할 때 파일 경로와 파일 이름이 적법한지 확인해야 합니다. 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-Z]:)?:表示可选的驱动器标识符,例如C:、D:等。
  • (/[a-zA-Z0-9]+)+:表示目录名称,其中“/”为目录分隔符。
  • /?$:表示可选的目录分隔符“/”。

使用上述函数可以对文件路径进行验证,并且返回一个布尔值。如果文件路径合法,则返回true;否则返回false。

二、文件名合法性验证

文件名是指文件在计算机文件系统中的名称,除了特殊字符,文件名可以包含任何字符。在PHP中,一个典型的文件名可以是这样的:

$fileName = "test_file.jpg";

文件名合法性验证的主要目的是防止恶意文件名攻击,保护项目安全。下面是使用正则表达式验证文件名的方法:

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

上述函数接受一个文件名为参数,并且使用正则表达式进行验证。正则表达式的含义如下:

  • ^[^-:*?"a8093152e673feb7aba1828c43532094|/]+:表示不包含控制符、分隔符和特殊字符的文件名。
  • $
  • (/[a-zA-Z0-9]+)+: 디렉터리 이름을 나타냅니다. 여기서 "/"는 디렉터리 구분 기호입니다.

/?$: 선택적 디렉터리 구분 기호 "/"를 나타냅니다.

위 함수를 사용하여 파일 경로를 확인하고 부울 값을 반환합니다. 파일 경로가 적합하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

2. 파일 이름 적법성 검증

파일 이름은 컴퓨터 파일 시스템에 있는 파일 이름을 의미하며, 특수 문자를 제외한 모든 문자가 포함될 수 있습니다. PHP에서 일반적인 파일 이름은 다음과 같습니다.

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;
}

파일 이름 적법성 확인의 주요 목적은 악의적인 파일 이름 공격을 방지하고 프로젝트 보안을 보호하는 것입니다. 정규식을 사용하여 파일 이름을 확인하는 방법은 다음과 같습니다. 🎜rrreee🎜위 함수는 파일 이름 매개변수를 받아들이고 확인을 위해 정규식을 사용합니다. 정규식의 의미는 다음과 같습니다. 🎜🎜🎜^[^- :*?"a8093152e673feb7aba1828c43532094|/]+: 제어 문자, 구분 기호 및 기호가 포함되지 않은 파일 이름을 나타냅니다. 특수 문자 🎜🎜$: 끝 문자를 나타냅니다. 🎜🎜🎜위 함수를 사용하여 파일 이름을 확인하고 파일 이름이 합법적이면 부울 값을 반환하고 그렇지 않으면 false를 반환합니다. verify🎜🎜실제 개발에서는 일반적으로 파일 경로와 파일 이름을 종합적으로 확인해야 합니다. 다음은 정규식을 사용하여 파일 경로와 파일 이름을 종합적으로 확인하는 함수입니다. 🎜rrreee🎜위 함수는 파일 경로와 파일 이름을 허용합니다. 매개 변수로 먼저 정규식을 사용하여 파일 경로를 확인합니다. 파일 경로가 잘못된 경우 false를 직접 반환하고 파일 이름이 잘못된 경우 정규식을 사용합니다. 그렇지 않으면 false를 반환하여 파일 경로와 파일 이름이 모두 유효함을 나타냅니다. 🎜🎜요약하자면, 정규식을 사용하여 파일 경로와 파일 이름의 적법성을 확인하는 것은 중요한 보안 조치입니다. 실제 개발을 하려면 정규식의 문법 규칙을 숙지하고 정규식을 잘 사용해야 합니다. 🎜적법성 확인을 위해.

위 내용은 파일 경로 및 파일 이름의 합법성을 확인하는 PHP 정규식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.