Querdenkender Webworker mit WordPress-Affinität

Never Trust A Stranger

Mit dem Titel Never Trust A Stranger oute ich mich erstmal ganz klar als Kind der 80er. Mein Opa hätte vermutlich Trau! schau! wem? gewählt und damit sein greises Alter verraten. Wie auch immer … der Sinn bleibt der Gleiche. Traue niemals den Eingaben der Benutzer! ist eine der wichtigsten Regeln für Webprogrammierer. Durch entsprechende „Demonstrationen findiger Benutzer“ auf diversen bekannteren Websites sollten die Meisten schon mal was von möglichen Attacken (SQL-Injection, XSS CSS Injection usw.) gehört haben. Diese Themen habe ich auch auf meiner Liste. Aber heute soll es um einen Problem gehen, dass sich manche Webmaster selbst machen …

Erst kürzlich habe ich wieder eine Webiste gesehen, die vermutlich so die Seiten holt:

[code lang=“php“]if (isset ($_REQUEST[‚page‘])) {
include ($_REQUEST[‚page‘]);
} else {
include (‚index.php‘);
}[/code]

Dummerweise kann, wenn PHP entsprechend konfiguriert ist, auch eine Datei eines anderen Servers inkludiert werden, was viel Spielraum für einige unfreundliche Zeitgenossen lässt. Ich will das nicht im Detail ausführen, sondern gleich mal eine mögliche Vorgehensweise erläutern, wenn man denn unbedingt sprechende URLs haben will. Mein Beispiel wird tatsächlich so auf einem meiner Projekte eingesetzt und bietet den Vorteil, dass damit auch die Angabe eines Parameters für die Sprachauswahl möglich ist:

[code lang=“php“]define (‚MYDOMAIN‘, ’sferracavallo.info‘);
define (‚MYCONTENT‘, ‚./contents/‘);

$request_uri = split („[?=]“, substr ($_SERVER[‚REQUEST_URI‘], 1));
$lang = isset ($request_uri[2]) ? ‚it‘ : ‚de‘;
$file = eregi (‚[a-z0-9.-]+‘, $request_uri[0]) ? $request_uri[0] : “;

if (!empty ($file)) {
if (!file_exists (MYCONTENT . $file)) {
header (
‚Location: http://‘ .
MYDOMAIN .
‚/404.php‘ . ($lang == ‚it‘ ? ‚?lang=it‘ : “)
);
}
include (MYCONTENT . $file);
} else {
include (MYCONTENT . ‚index.php‘);
}[/code]

Damit das Ganze funktioniert, braucht es nur wenige Vorbereitungen, dann kann man alles über eine zentrale index.php steuern. Der obige Code wird in die index.php am Anfang eingefügt. In den defines MYDOMAIN und MYCONTENT müssen die entsprechenden Anpassungen vorgenommen werden. MYDOMAIN darf nur den Domainnamen (auch mit einem www. davor, wenn die Site so aufgesetzt ist) enthalten. Im Verzeichnis, dass in MYCONTENT angegeben wurde, muss sich mindestens eine 404.php befinden. Dann kann man schlussendlich eine Datei mit dem Namen .htaccess abspeichern und glücklich sein, wenn der Domainname hier ebenfalls geändert wurde:

[code lang=“bash“]RewriteEngine on

RewriteCond %{HTTP_HOST} !^sferracavallo.info$
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)$ http://sferracavallo.info/$1 [L,R=301]

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
[/code]

Have fun!

Das könnte Dich auch interessieren:

Deine Meinung ist uns wichtig

*