2017-08-30 1 views
1

J'ai une application Web hybride mvc/forms hébergée sur une instance de Windows 2008 R2 sur Azure. Le serveur Web est IIS 7.5. Au cours des 4 à 5 derniers mois, mon serveur est complètement détruit par les scanners de vulnérabilité qui vérifient les vulnérabilités liées au php. exemple:Meilleure pratique pour refuser/supprimer des demandes d'URL spécifiques ASP.Net IIS 7.5

The controller for path '/wp-login.php' was not found or does not implement IController. 

de Elmah

Alors je suis allé et spécifiquement filtré demandes d'extension de fichier .php et .cgi dans IIS 7.5 qui fonctionne très bien. Cependant, je suis toujours obtenir pour des demandes similaires martelé:

The controller for path '/admin/Cms_Wysiwyg/directive/' was not found or does not implement IController. 

The controller for path '/phpmyadmin2018/' was not found or does not implement IController. 

etc., etc. Il est plus un ennui que tout est connecté, un 404 est retourné et il est tout un jetable de ressources inutiles.

Grâce à Elmah, j'ai interrogé une liste distincte d'URL liées à toutes ces demandes. Quel est le meilleur moyen de court-circuiter ces demandes? Ce serait bien si je pouvais éventuellement interdire les adresses IP, mais actuellement il y a 700 adresses IP uniques qui font ces demandes au cours des 3 derniers mois seulement. La priorité principale est de court-circuiter les requêtes depuis le dictionnaire des URLs que je connais sont faux et d'éviter la journalisation et la réponse de mon serveur web. Merci!

Répondre

1

pseudo-code, mais je pense que ce sera utile;

dans Global.asax.cs:

public class MvcApplication : HttpApplication 
{ 
    protected void Application_BeginRequest(Object sender, EventArgs e) 
    { 
     var url = HttpContext.Current.Request.Url.AbsoluteUri; 
     if(checkUrl(url)){ 
      // your code here 
     } 

     if (UserIsBanned(GetUserIp())) 
     { 
      Response.Write("ban"); 
      Response.End(); 
     } 
    } 

    private string GetUserIp() 
    { 
     return HttpContext.Current.Request.UserHostAddress; 
    } 
+0

Oui ce qui est utile. Merci. Si j'ai un dictionnaire/tableau/collection de disons de ~ 400 "mauvais" url est combien intensive en ressources serait-ce en termes de temps de réponse pour les "bonnes" demandes régulières? –

+0

probablement ok, vous pouvez toujours le mesurer, vous pouvez également poser une question distincte pour l'exécution de la recherche dans le dictionnaire et combien cela va ralentir la demande – Omu