Ich bin kürzlich von fehlerhaften Fehlermeldungen von mod_security frequentiert worden. Die Filtersätze decken veraltete PHP-Exploits ab, und ich muss meine Inhalte neu schreiben, da Wordpress & Co vor Jahren Fehler hatte.
Passiert das jemand anderem?
Apache mod_security blockiert möglicherweise gefährliche HTTP-Anforderungen, bevor sie Anwendungen erreichen (speziell PHP). Es werden verschiedene Filtersätze verwendet, die hauptsächlich auf Regex basieren.
Also habe ich einen netten Shared Hosting Anbieter, technisch passend und so. Aber das nervte mich:
Erst letzte Woche musste ich einen Parameternamen &src=in einer meiner Apps ändern, weil mod_security damit JEDE Anfragen blockiert. Ich habe die Details nicht nachgeschlagen, aber diese Filterregel verhinderte die Ausnutzbarkeit einer anderen App, die ich nicht verwende und von der ich wahrscheinlich noch nie gehört habe. Trotzdem musste ich meinen Code neu schreiben (das Umbenennen von Parametern reicht oft aus, um mod_security auszutricksen), was nichts damit zu tun hatte oder damit gemein hatte!
Und heute blockiert ein alberner Regex Formulareingaben, weil ich PHP-Beispielcode einreichen wollte. Dies ist das einfache Zeug, vor dem mod_security schützen soll. Aber ich glaube nicht, dass mod_security ernsthaft verschleierten Code erkennen kann und nur bei offensichtlichen (und in diesem Fall völlig trivialen) PHP-Schnipsel abläuft.
Grundsätzlich werde ich von mod_security bestraft, weil andere Leute fehleranfällige Apps veröffentlicht haben. (Ich sage nicht, dass meine Apps extrem sicher sind - ich bin ziemlich sicherheitsbedürftig, mache aber keine hyperbolischen Ansprüche.)
Ich habe meinen Provider bereits gebeten, sie trotzdem zu deaktivieren. Die Vorteile sind zu gering, IMO und für meine Apps.
Was denkst du? Ist mod_security außerhalb des WP-Hostings sehr sinnvoll? Oder sind es wirklich nur ein paar schwarze Listen mit längst vergangenen Sicherheitslücken? Welche der Regeln sind tatsächlich hilfreich? Gibt es eine entsprechende Anwendungsebene?
<?php doBadStuff(); ?>diese Funktion nicht ausgeführt wird. (Es sei denn, Sie verwendenevalnatürlich, was sowieso böse ist.)