Mamy poważny błąd w PHP.
Wystarczy metodą GET wywołać skrypt:
np. forum PHPBB.
viewforum.php?f=22250738585072011e-324
aby skutecznie zablokować serwer www.
inne formy zapisu liczby:
0.22250738585072011e-307
22.250738585072011e-309
2.2250738585072011e-308
Powodem problemu jest funkcja zend_strtod.
Jak się zabezpieczyć?
Można na początku każdego skryptu dodać:
if (strpos(str_replace(’.’, ”, serialize($GLOBALS)), '22250738585072011′)!==false) die();
Lub co jest znacznie prostsze wykorzystać mod_security:
SecRule QUERY_STRING „\d+e\-\d+” „phase:2,deny,status:404”
Można także zastosować mechanizmy apache:
<LocationMatch „.*\d+e\-\d+.*>
deny from all
</LocationMatch>
Od tej chwili nie jesteśmy już podatni na ten atak DoS.