백엔드 개발 PHP 튜토리얼 PHP 마스터 | 파일 무결성 모니터링

PHP 마스터 | 파일 무결성 모니터링

Mar 03, 2025 am 08:26 AM

PHP Master | Monitoring File Integrity 키 포인트

파일 모니터링은 웹 사이트 관리에 필수적이며 파일이 추가, 수정, 삭제 또는 손상된시기를 감지하는 데 도움이됩니다. 파일의 내용을 해싱하는 것은 이러한 변경 사항을 모니터링하는 신뢰할 수있는 방법입니다. PHP의

함수를 사용하여 모니터링을위한 파일 구조 구성 파일을 작성할 수 있습니다. 각 파일의 해시 값은 나중에 비교를 위해 저장하여 변경 사항을 감지 할 수 있습니다. 먼저 파일의 해시 값을 저장하려면 기본 테이블을 레이아웃해야합니다. 다음 패턴을 사용하겠습니다
CREATE TABLE integrity_hashes (
    file_path VARCHAR(200) NOT NULL,
    file_hash CHAR(40) NOT NULL,
    PRIMARY KEY (file_path)
);
로그인 후 복사
로그인 후 복사

스토리지 서버의 파일 경로는 값이 항상 고유하므로 (파일이 파일 시스템에서 동일한 위치를 차지할 수 없기 때문에) 기본 키입니다. 최대 길이를 200 자로 지정하여 더 긴 파일 경로를 허용해야합니다. 는 파일의 해시 값을 저장하며, 이는 SHA-1 40-character 16 진수 문자열입니다. file_path file_hash 파일을 수집

다음 단계는 파일 구조에 대한 구성 파일을 빌드하는 것입니다. 파일 수집을 시작하는 경로를 정의하고 파일 시스템의 전체 브랜치를 덮어 쓸 때까지 각 디렉토리를 재귀 적으로 반복하고 특정 디렉토리 또는 파일 확장을 선택적으로 배제 할 수 있습니다. 파일 트리를 통과 할 때 필요한 해시 값을 수집 한 다음 데이터베이스 또는 비교를 위해 저장합니다. PHP는 파일 트리를 가로 지르는 몇 가지 방법을 제공합니다.

배열에서 동일한 폴더를 두 번 참조했다는 점에 유의하십시오. 특정 디렉토리를 무시하기로 선택했다고해서 반복자가 귀하의 요구에 따라 모든 하위 디렉터를 무시한다는 것을 의미하지는 않습니다.

클래스는 여러 가지 방법에 대한 액세스 권한을 제공합니다.

RecursiveDirectoryIterator 유효한 파일을 사용하고 있는지 확인하십시오

디렉토리가 "또는".. " 파일 포인터가 현재 위치한 폴더 이름으로 돌아갑니다
<?php
define("PATH", "/var/www/");
$files = array();

// 要获取的扩展名,空数组将返回所有扩展名
$ext = array("php");

// 要忽略的目录,空数组将检查所有目录
$skip = array("logs", "logs/traffic");

// 构建配置文件
$dir = new RecursiveDirectoryIterator(PATH);
$iter = new RecursiveIteratorIterator($dir);
while ($iter->valid()) {
    // 跳过不需要的目录
    if (!$iter->isDot() && !in_array($iter->getSubPath(), $skip)) {
        // 获取特定文件扩展名
        if (!empty($ext)) {
            // PHP 5.3.4: if (in_array($iter->getExtension(), $ext)) {
            if (in_array(pathinfo($iter->key(), PATHINFO_EXTENSION), $ext)) {
                $files[$iter->key()] = hash_file("sha1", $iter->key());
            }
        } else {
            // 忽略文件扩展名
            $files[$iter->key()] = hash_file("sha1", $iter->key());
        }
    }
    $iter->next();
}
로그인 후 복사
로그인 후 복사

전체 경로와 파일 이름을 반환하십시오 루프를 다시 시작하십시오 $skip logs 더 많은 방법이 있지만, 대부분의 경우 위에 나열된 시간은 PHP 5.3.4에 추가되었지만 파일 확장자를 반환합니다. PHP 버전이 지원하는 경우 RecursiveDirectoryIterator로 수행 한 작업 대신 원치 않는 항목을 필터링하는 데 사용할 수 있습니다. 실행 후 코드는 다음과 유사한 결과로

배열을 채워야합니다.
    구성 파일을 구축 한 후 데이터베이스를 업데이트하기가 매우 쉽습니다.
  • valid()
  • 차이를 점검하십시오
  • isDot() 이제 디렉토리 구조에 대한 새 구성 파일을 작성하는 방법과 데이터베이스에서 레코드를 업데이트하는 방법을 알고 있습니다. 다음 단계는 이메일 알림, 관리자 인터페이스 또는 원하는 다른 것과 같은 CRON 작업과 같은 일종의 실제 응용 프로그램으로 결합하는 것입니다. 변경 방법을 돌보지 않고 변경된 파일 목록을 수집하려면 가장 쉬운 방법은 데이터베이스에서 데이터를 와 비슷한 배열로 추출하고 원치 않는 콘텐츠를 제거하기 위해 PHP의 함수를 사용하는 것입니다.
  • CREATE TABLE integrity_hashes (
        file_path VARCHAR(200) NOT NULL,
        file_hash CHAR(40) NOT NULL,
        PRIMARY KEY (file_path)
    );
    로그인 후 복사
    로그인 후 복사
    이 예에서

    는 발견 된 차이점으로 채워 지거나 파일 구조가 완료되면 빈 배열이됩니다. 와 달리 $diffs는 키를 비교하여 사용합니다. 이는 두 개의 빈 파일이 동일한 해시 값을 갖는 것과 같이 충돌 할 때 중요합니다. 한 걸음 더 나아가려면 파일이 삭제, 변경 또는 추가되는지 여부에 관계없이 파일의 영향을 받는지 정확하게 결정하기 위해 간단한 논리를 추가 할 수 있습니다. array_diff() array_diff_assoc() 데이터베이스에서 결과를 가로 질러 여러 번 확인합니다. 먼저

    를 사용하여 데이터베이스의 파일 경로가 에 나타나는지 확인하고 파일을 삭제해야합니다. 둘째, 파일이 존재하지만 해시가 일치하지 않으면 파일이 변경되었거나 변경되지 않아야합니다. 우리는 각 체크를 라는 임시 배열에 저장하고 마지막으로 의 숫자가 데이터베이스의 숫자보다 큰 경우 나머지 확인되지 않은 파일이 추가되었음을 알고 있습니다. 일단 완료되면
    <?php
    define("PATH", "/var/www/");
    $files = array();
    
    // 要获取的扩展名,空数组将返回所有扩展名
    $ext = array("php");
    
    // 要忽略的目录,空数组将检查所有目录
    $skip = array("logs", "logs/traffic");
    
    // 构建配置文件
    $dir = new RecursiveDirectoryIterator(PATH);
    $iter = new RecursiveIteratorIterator($dir);
    while ($iter->valid()) {
        // 跳过不需要的目录
        if (!$iter->isDot() && !in_array($iter->getSubPath(), $skip)) {
            // 获取特定文件扩展名
            if (!empty($ext)) {
                // PHP 5.3.4: if (in_array($iter->getExtension(), $ext)) {
                if (in_array(pathinfo($iter->key(), PATHINFO_EXTENSION), $ext)) {
                    $files[$iter->key()] = hash_file("sha1", $iter->key());
                }
            } else {
                // 忽略文件扩展名
                $files[$iter->key()] = hash_file("sha1", $iter->key());
            }
        }
        $iter->next();
    }
    로그인 후 복사
    로그인 후 복사
    는 빈 배열이거나 다차원 배열 형태로 발견되는 차이점을 포함합니다.

    를 표시하려면보다 사용자 친화적 인 형식 (예 : 관리 인터페이스)을 표시하려면 결과를 반복하여 총알 목록으로 출력 할 수 있습니다. array_key_exists() $files 이 시점에서 새 파일 구조로 데이터베이스 업데이트 작업을 트리거 할 수있는 링크를 제공 할 수 있습니다 (이 경우 세션 변수에 $tmp를 저장하도록 선택할 수 있음) 또는 차이를 승인하지 않으면 필요에 따라 처리 할 수 ​​있습니다. $files 요약 $diffs

    이 안내서가 파일 무결성 모니터링을 더 잘 이해하는 데 도움이되기를 바랍니다. 웹 사이트에 이러한 콘텐츠를 설치하는 것은 귀중한 보안 조치이며 파일의 의도와 동일하게 유지 될 수 있습니다. 물론 정기적으로 백업하는 것을 잊지 마십시오. 경우에.
    <code>Array
    (
        [/var/www/test.php] => b6b7c28e513dac784925665b54088045cf9cbcd3
        [/var/www/sub/hello.php] => a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa
        [/var/www/sub/world.php] => da39a3ee5e6b4b0d3255bfef95601890afd80709
    )</code>
    로그인 후 복사

    (원본 텍스트의 FAQ 부분은 여기에서 유지되어야합니다.이 부분의 내용은 코드 부분과 관련이없고 보충 설명에 속하며 의사 원리의 범주에 속하지 않기 때문입니다)

    .

위 내용은 PHP 마스터 | 파일 무결성 모니터링의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP에서 보안 비밀번호 해싱을 설명하십시오 (예 : Password_hash, Password_Verify). 왜 MD5 또는 SHA1을 사용하지 않습니까? PHP에서 보안 비밀번호 해싱을 설명하십시오 (예 : Password_hash, Password_Verify). 왜 MD5 또는 SHA1을 사용하지 않습니까? Apr 17, 2025 am 12:06 AM

PHP에서 Password_hash 및 Password_Verify 기능을 사용하여 보안 비밀번호 해싱을 구현해야하며 MD5 또는 SHA1을 사용해서는 안됩니다. 1) Password_hash는 보안을 향상시키기 위해 소금 값이 포함 된 해시를 생성합니다. 2) Password_verify 암호를 확인하고 해시 값을 비교하여 보안을 보장합니다. 3) MD5 및 SHA1은 취약하고 소금 값이 부족하며 현대 암호 보안에는 적합하지 않습니다.

스칼라 유형, 반환 유형, 노조 유형 및 무효 유형을 포함한 PHP 유형의 힌트 작업은 어떻게 작동합니까? 스칼라 유형, 반환 유형, 노조 유형 및 무효 유형을 포함한 PHP 유형의 힌트 작업은 어떻게 작동합니까? Apr 17, 2025 am 12:25 AM

PHP 유형은 코드 품질과 가독성을 향상시키기위한 프롬프트입니다. 1) 스칼라 유형 팁 : PHP7.0이므로 int, float 등과 같은 기능 매개 변수에 기본 데이터 유형을 지정할 수 있습니다. 2) 반환 유형 프롬프트 : 기능 반환 값 유형의 일관성을 확인하십시오. 3) Union 유형 프롬프트 : PHP8.0이므로 기능 매개 변수 또는 반환 값에 여러 유형을 지정할 수 있습니다. 4) Nullable 유형 프롬프트 : NULL 값을 포함하고 널 값을 반환 할 수있는 기능을 포함 할 수 있습니다.

PHP와 Python : 다른 패러다임이 설명되었습니다 PHP와 Python : 다른 패러다임이 설명되었습니다 Apr 18, 2025 am 12:26 AM

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP에서 SQL 주입을 어떻게 방지합니까? (준비된 진술, pdo) PHP에서 SQL 주입을 어떻게 방지합니까? (준비된 진술, pdo) Apr 15, 2025 am 12:15 AM

PHP에서 전처리 문과 PDO를 사용하면 SQL 주입 공격을 효과적으로 방지 할 수 있습니다. 1) PDO를 사용하여 데이터베이스에 연결하고 오류 모드를 설정하십시오. 2) 준비 방법을 통해 전처리 명세서를 작성하고 자리 표시자를 사용하여 데이터를 전달하고 방법을 실행하십시오. 3) 쿼리 결과를 처리하고 코드의 보안 및 성능을 보장합니다.

PHP 및 Python : 코드 예제 및 비교 PHP 및 Python : 코드 예제 및 비교 Apr 15, 2025 am 12:07 AM

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

PHP : 데이터베이스 및 서버 측 로직 처리 PHP : 데이터베이스 및 서버 측 로직 처리 Apr 15, 2025 am 12:15 AM

PHP는 MySQLI 및 PDO 확장 기능을 사용하여 데이터베이스 작업 및 서버 측 로직 프로세싱에서 상호 작용하고 세션 관리와 같은 기능을 통해 서버 측로 로직을 처리합니다. 1) MySQLI 또는 PDO를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하십시오. 2) 세션 관리 및 기타 기능을 통해 HTTP 요청 및 사용자 상태를 처리합니다. 3) 트랜잭션을 사용하여 데이터베이스 작업의 원자력을 보장하십시오. 4) SQL 주입 방지, 디버깅을 위해 예외 처리 및 폐쇄 연결을 사용하십시오. 5) 인덱싱 및 캐시를 통해 성능을 최적화하고, 읽을 수있는 코드를 작성하고, 오류 처리를 수행하십시오.

PHP의 목적 : 동적 웹 사이트 구축 PHP의 목적 : 동적 웹 사이트 구축 Apr 15, 2025 am 12:18 AM

PHP는 동적 웹 사이트를 구축하는 데 사용되며 해당 핵심 기능에는 다음이 포함됩니다. 1. 데이터베이스와 연결하여 동적 컨텐츠를 생성하고 웹 페이지를 실시간으로 생성합니다. 2. 사용자 상호 작용 및 양식 제출을 처리하고 입력을 확인하고 작업에 응답합니다. 3. 개인화 된 경험을 제공하기 위해 세션 및 사용자 인증을 관리합니다. 4. 성능을 최적화하고 모범 사례를 따라 웹 사이트 효율성 및 보안을 개선하십시오.

PHP와 Python 중에서 선택 : 가이드 PHP와 Python 중에서 선택 : 가이드 Apr 18, 2025 am 12:24 AM

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

See all articles