URI-Sperre mit PHP statt htaccess


Für mehr Kontrolle beim sperren von unliebsamen URI Aufrufen sorgt dieses PHP-Script

URI-Aufrufe mit PHP sperren

Die Sperrung von unliebsamen URI in die Webseite hinen habe ich ja bereits gezeigt, mit Hilfe der Sperre in der htaccess werden unliebsame Besucher bereits vor Eintritt in die Webseite gesperrt. Der Nachteil der Methode wa jedoch, das nur wenig Kontrolle möglich ist, denn um zu prüfen welcher Besucher abgewiesen wurde, muss das Serverlog eingesehen werden.

Die Variante mit PHP-Script tut im wesentlichen genau das gleiche, jedoch ist das PHP-Script noch in der Lage unliebsame Gäste in einem Logfile zu protokollieren.

<?php
$excluded_uri = <<<EOD
{domain.tld[/]path[/]}
{domain.tls[/]tag[/]}
{th1s_1s_a_4o4.html}
{[/]xmlrpc}
{[/]tag[/]}
{[/]wp-admin[/]}
{[/]wp-content[/]}
{[/]wp-includes[/]}
{[/]wp[/]}
{[/]_assets[/]}
{[\.]env}
{[\.]php}
EOD;

    $file_for_log = "log-".date('d').".txt";
    $grund        = "";

    foreach(explode("\n", $excluded_uri) as $regex_number => $regex_pattern) 
    {
        if (preg_match($regex_pattern, $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']))
        {
        $grund = "Path excluded Rule =>>".$regex_pattern."<<=";
            $output = date('Y-m-d H:m:s').'  >> Error 410/404 '.$grund.'  -  '.$_SERVER['REMOTE_ADDR']."\n";

            file_put_contents($file_for_log, $output, FILE_APPEND | LOCK_EX)!==false;

            http_response_code(410);

            header("HTTP/1.1 410");
            echo '<?xml version="1.0" encoding="iso-8859-1">';
            echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
            echo '<html xmlns="https://www.w3.org/1999/xhtml">';
            echo '<head>';
            echo '<meta name="robots" content="noindex, follow" />';
            echo '<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">';
            echo '</head>';
            echo '<body>';
            echo '<div class="container">';
            echo '<h1 class="p-5 my-5 text-light rounded" style="background-color: SteelBlue;">Error 410</h1>';
            echo '<p class="lead p-5 m-5">Der Beitrag (URI) wurde gelöscht, bzw. die Suchmaschine wurde mit einem Error 404 angewiesen, diesen Beitrag aus dem Index dauerhaft zu entfernen.</p>';
            echo '<p class="lead p-5 m-5">Sollte es sich um ein persönliches Lesezeichen Ihres Browsers handeln, so können Sie dieses entfernen. Sind Sie der Administrator der verweisenden Webseite, entfernen Sie bitte den Link von Ihrer Seite oder aus dem betreffenden Beitrag oder der Blogroll Ihrer Webseite.</p>';
            echo '<hr>';
            echo '&copy by Oliver Lohse - Administrator - SEO-Toolkit';
            echo '</div>';
            echo '</body>';
            echo '</html>';

            exit;
        }
    }
?>

Code


Mein Name ist Oliver Lohse. Ich bin diplomierter Wirtschafts-Informatiker und Organisations-Programmierer in verschiedenen Sprachen bzw. Markup-Dialekten, z.B. Java, JEE, COBOL, PHP, Python, MySQL, HTML, CSS, ANSI C, Lisp, Rexx, JavaScript, Scheme, ActionScript 2.0, Maschinensprache, Assembler und JCL. Seit mehr als 25 Jahren arbeite ich in einem großen Softwareunternehmen für Versicherungen in Hannover Niedersachsen.

FlightCMS
2024-01-28
Beitrag,Sortieren,Datum,Titel,ASC,DESC
post
Kontakt@Oliver-Lohse.de

PHP

PHP ist die strategische Programmiersprache des Internets, mit PHP geht alles und ohne PHP nichts! Allerdings ist PHP nicht auf lokalen Client-Umgebungen verbreitet (aber möglich).

Datenschutz

Die Webseite verwendet keinerlei Tracking- oder Speichermechanismen, die einen Rückschluss auf das Leserverhalten und Ihre Identität zulassen. Die Webseite verwendet keine Cookies, denn Cookies haben einen schlechten Ruf.

Impressum

CMSWorkbench ist eine Entwicklerseite über meine Arbeit im Bereich der Content Management Systeme. Die vielen Codeschnipsel sind im wesentlichen als kleine Notizzettel zu werten als das es ausgereifte Beiträge wären.