User-Agent Filter fürs Debuggen

Letztens stand ich vor dem Problem an einer Webanwendung, die schon im Produktivbetrieb war, debuggen zu müssen. Der offensichtliche Weg wäre wohl gewesen einen GET Parameter wir z.B. ?debug an die URL anzuhängen und damit die Debugausgaben zu erhalten. In diesem Fall sollte aber die Verarbeitung von GET Parametern überprüft werden, also schied dieser Weg aus.

Ich hätte auch alles in eine Datei loggen können, aber die Lösung die ich am Ende eingeschlagen habe war folgende: In der Anwendung wird der User-Agent des Clients überprüft, hat dieser einen speziellen Wert, z.B. "my-user-agent", werden die Debugausgaben angezeigt, ansonsten nicht. Diese Methode beeinträchtigt den Produktivbetrieb so gut wie gar nicht und wenn der User-Agent entsprechend kryptisch gewählt wird, ist die Chance, dass jemand dieses durch Zufall trifft sehr gering.

In PHP sieht das ganze ungefähr so aus:

if($_SERVER['HTTP_USER_AGENT'] == "my-user-agent") {
    var_dump($var_to_debug);
}

Nach dem var_dump() könnte man natürlich noch die weitere Abarbeitung mit die() oder exit() abbrechen.

Abfragen mit selbst gesetztem User-Agent stellt man entweder mit seinem Browser der Wahl, oder einfach mit curl oder wget, z.B. so:

curl --user-agent my-user-agent http://server/path/

Diesen Post von mir gibt es auch auf englisch im SpyBlog.