Az MSDN Kompetencia Központ honlapján megszaporodtak az olyan rossz indulatú webes kérések, amit szemmel láthatóan robotok küldenek, próbálva felderíteni a webhely által használt technológiákat, hogy kihasználhassák azok sebezhetőségeit. Itt az ideje, hogy megszabaduljunk tőlük.
Az ilyen kérések többnyire olyan URL-re mutatnak, ami nálunk tipikusan nem is létezik. Például teljesen hiába jön kérés errors.php oldalra, olyanunk biztosan nincs. Az ilyen nem létező URL-eket természetesen az IIS elhajtja 404-es hibával, kicsit szemeteli a logot, de komoly gondot nem okoz.
Ami viszont gondot jelent, az a /Articles útvonal, ebben a névtérben ugyanis virtuális URL-eket kezelünk (mint ahogyan azt egyébként több más blog motor is teszi). Magyarul a http://www.msdnkk.hu/Articles/Csharp_programozas_allasinterju_kerdesek oldal úgy készül, hogy a bejövő kérést keresztül zavarjuk az ASP.NET motoron, átadjuk a kérést egy teljesen más címen elérhető oldalnak, amely az URL vége alapján adatbázisból megjeleníti a cikket. Ennek a folyamatnak sajnos csak a legvégén derül ki, ha az URL-ben megadott cikk nem létezik.
Ráadásul a gonosz kis robotok szemmel láthatóan felismerik az ilyen címeket és éppúgy próbálkoznak, mint amikor Article.aspx?id=<guid> típusú címeink voltak. (Bár nagyságrendekkel visszaesett az ilyen próbálkozások száma.) Az utóbbi időben például rengeteg kérés jön a /Articles/xmlrpc.php címre, amit természetesen naplózunk, hogy tudjuk javítani a hibás linkjeinket. Legegyszerűbben úgy lehet ezektől megszabadulni, hogy az IIS-ben bekonfiguráljuk a request filtering szolgáltatást. A request filteringhez nincs GUI az IIS Managerben, aki ragaszkodik hozzá, töltse le az IIS Admin Packot. A vagányabbak írhatják rögtön a web.configba:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <security> <requestFiltering> <denyUrlSequences> <add sequence="Articles/xmlrpc.php" /> </denyUrlSequences> </requestFiltering> </security> </system.webServer> </configuration>
A kérés el sem jut az ASP.NET motorig, a kliens pedig ezt kapja:
HTTP Error 404.5 – URL Sequence Denied
Érdekel valakit, hogy mit tud még az IIS 7, írjak róla?