Aktueller Standort: Startseite> Neueste Artikel> Erstellen Sie ein einfaches Tool zur Erkennung von Dateiintegritätserkennung

Erstellen Sie ein einfaches Tool zur Erkennung von Dateiintegritätserkennung

M66 2025-06-06

In der täglichen Entwicklung und des Betriebs und der Wartung der Website ist die Dateiintegrität ein wichtiger Bestandteil der Systemsicherheit. Sobald eine Datei manipuliert ist, kann dies bedeuten, dass das System angegriffen wurde oder Datenverletzungen verletzt wurden. Um mit dieser Situation fertig zu werden, können wir die integrierte MD5_File () -Funktion von PHP verwenden, um ein einfaches und praktisches Tool zur Erkennung von Dateiintegrität zu erstellen.

1. Was ist die Funktion md5_file?

md5_file () ist eine von PHP bereitgestellte Funktion, um den MD5 -Hash -Wert einer angegebenen Datei direkt zu berechnen. Die grundlegende Syntax ist wie folgt:

 md5_file(string $filename, bool $binary = false): string|false
  • $ Dateiname : Der zu berechnete Dateipfad.

  • $ Binary : Ob Hash im ursprünglichen Binärformat zurückgegeben werden soll (Standard ist falsch und eine 32-Bit-Hexadezimalstrich zurückgegeben).

Beispiel:

 $hash = md5_file('example.txt');
echo $hash;

2. Tool Design -Ideen

Wir haben das Werkzeug in zwei Phasen entworfen:

  1. Generieren Sie den Benchmark -Überprüfungscode (Basislinie) : Notieren Sie die MD5 -Werte aller zu überwachenden Dateien und speichern Sie sie in einer JSON -Datei.

  2. Periodenkennung : Berechnen Sie den MD5 -Wert der aktuellen Datei neu, vergleichen Sie ihn mit der Basisdatei und bestimmen Sie, ob er geändert, gelöscht oder hinzugefügt wurde.

A. Implementierungsschritte

1. Scannen Sie das Verzeichnis und generieren Sie die Basisdatei

 function generateBaseline($dir, $baselineFile = 'baseline.json') {
    $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
    $hashes = [];

    foreach ($files as $file) {
        if ($file->isFile()) {
            $path = str_replace('\\', '/', $file->getRealPath());
            $hashes[$path] = md5_file($path);
        }
    }

    file_put_contents($baselineFile, json_encode($hashes, JSON_PRETTY_PRINT));
    echo "Die Basisdatei wurde generiert: {$baselineFile}\n";
}

// Nutzungsbeispiel
generateBaseline(__DIR__ . '/files');

Diese Funktion scursive alle Dateien im Verzeichnis von Dateien rekursiv und schreibt den vollständigen Pfad jeder Datei und ihren MD5 -Wert an baseline.json .

2. Änderungen der Datei Erkennen

 function checkIntegrity($dir, $baselineFile = 'baseline.json') {
    if (!file_exists($baselineFile)) {
        echo "Basisdatei nicht gefunden,Bitte sei eine Grundlinie。\n";
        return;
    }

    $baseline = json_decode(file_get_contents($baselineFile), true);
    $current = [];

    $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
    foreach ($files as $file) {
        if ($file->isFile()) {
            $path = str_replace('\\', '/', $file->getRealPath());
            $current[$path] = md5_file($path);
        }
    }

    // Erkennen Sie Dateien, die geändert oder gelöscht wurden
    foreach ($baseline as $path => $hash) {
        if (!isset($current[$path])) {
            echo "[löschen] {$path}\n";
        } elseif ($current[$path] !== $hash) {
            echo "[Überarbeiten] {$path}\n";
        }
    }

    // Neue Dateien erkennen
    foreach ($current as $path => $hash) {
        if (!isset($baseline[$path])) {
            echo "[Neu] {$path}\n";
        }
    }
}

// Nutzungsbeispiel
checkIntegrity(__DIR__ . '/files');

Dieses Erkennungsskript vergleicht den alten und neuen Hashes und gibt jeden Dateipfad aus, der geändert, hinzugefügt oder gelöscht wurde, damit Entwickler rechtzeitig Maßnahmen ergreifen können.

4. Visualisierung oder Fernberichterstattung (optional)

Die Testergebnisse können über E -Mails, Protokolldateien oder Webseiten angezeigt werden. Zum Beispiel:

 file_put_contents('integrity_report.log', $report);
header('Location: https://m66.net/report-viewer');

Der obige Code leitet den Erkennungsbericht in die Protokolldatei um und leitet ihn dann auf eine Berichts-Viewer-Seite um, z. B. https://m66.net/report-viewer .

5. Zusammenfassung

Durch die Funktion MD5_FILE () können wir ein effizientes Tool zur Erkennung von Dateiintegrität mit sehr wenig Code erstellen. Obwohl es keine professionellen Sicherheitsschutzwerkzeuge ersetzen kann, reicht es für kleine und mittelgroße Websites aus, um mit gemeinsamen Manipulationen Risiken umzugehen. In der tatsächlichen Bereitstellung wird empfohlen, das Skript regelmäßig als Cron -Aufgabe auszuführen und die Sicherheit in Kombination mit Benachrichtigungsmechanismen (wie E -Mail- oder Dingtalk -Robotern) weiter zu verbessern.