phpbar.de logo

Mailinglisten-Archive

[php] Cross-Site-Scripting (XSS) Schutz mit PHP

[php] Cross-Site-Scripting (XSS) Schutz mit PHP

Roland Tapken php_(at)_phpcenter.de
Thu, 10 Oct 2002 23:20:56 +0200


Hi!

> Das ist ja in der Theorie sicher sehr interessant, jedoch nützt mir
> die Authentizität der Verbindung nicht sehr viel, da 1. die Site frei
> zugänglich ist und 2. sich die Authentizität auf eine IP-Adresse
> beschränkt. Ein XCC Angriff kann auf JEDER Seite erfolgen (Bsp:
> http://target.de?was=<=<scri*pt>JavaScript:alert('document.cookie');</scri*p
> t> )!

Also so wie ich dich verstehe befürchtest du, dass jemand Variabeln
deinen Scriptes verändern könnte? Schonmal daran gedacht,
register_globals = off in der php.ini bzw. .htaccess zu setzen? Dann
kann man von außen keine globalen Variablen mehr verändern, sondern nur
noch solche in den $_REQUEST, $_GET, $_POST, etc-Arrays. Und dort kann
man dann ganz bequem von Fall zu fall (je nach Anwendung) eine
Plausibilitätsprüfung machen.

Wenn du register_globals nicht verändern kannst, dann gibt es einen
kleinen Workaround:

Am Anfang des Scriptes (d.h. bevor andere Teile des Scriptes
irgendwelche Variablen setzen) folgende Schleife einbauen:

foreach ($_POST AS $key => $val) {
    if (${$key} == $val) {
        unset (${$key});
    }
}
foreach ($_GET AS $key => $val) {
    if (${$key} == $val) {
        unset (${$key});
    }
}
foreach ($_COOKIE AS $key => $val) {
    if (${$key} == $val) {
        unset (${$key});
    }
}

Diese Schleifen löschen globale Variabeln wenn ihr Inhalt mit den von
außen übermittelten Variablen identisch ist.


cu, Roland Tapken
-- 
Please reply to:  tapken_(at)_engter.de
> I spent a minute looking at my own code by accident.
> I was thinking "What the hell is this guy doing?"


php::bar PHP Wiki   -   Listenarchive