Come gestire le cartelle nascoste sul sito Web distribuito

2

Il nostro team di sicurezza sul posto di lavoro ha effettuato una scansione di sicurezza del nostro sito Web che presto sarebbe stato distribuito e uno degli elementi trovati è stato "Hidden Directory Detected". Si presenta per 3 diverse cartelle, aspnet_client, script e contenuto.

Il software consiglia di lanciare un 404 anziché un 403 o rimuovere completamente le cartelle. Innanzitutto, le cartelle sono effettivamente necessarie? Come posso determinare quali cartelle del mio progetto di Visual Studio sono effettivamente necessarie affinché il sito sia effettivamente in esecuzione (senza rimuovere cartelle una alla volta e tentando di accedere al sito)?

Qual è il modo corretto di gestire questo / risolvere l'avviso della scansione di sicurezza? Devo aggiungere speciali regole di routing in routeconfig.cs per quando si accede a questi percorsi?

Modifica, dovrei notare che questo è il servizio WebApi / REST, non un normale sito MVC. (Pertanto, l'uso della sezione di configurazione CustomErrors non funzionerà)

    
posta ganders 17.07.2014 - 15:00
fonte

1 risposta

0

Dopo molto googling, ecco la soluzione che ho implementato. Non sono sicuro che sia la migliore pratica per questo genere di cose, ma funziona nel mio scenario.

Scorri verso il basso fino alla risposta sull'implementazione di NoAccessHandler: IHttpHandler

link

Sezione di configurazione necessaria:

<httpHandlers>
      <add verb="*" path="docs/*" validate="false" type="MyNameSpace.NoAccessHandler"/>
</httpHandlers>


<system.webServer>
        <handlers>
      <add name="NoAccess" verb="*" path="docs/*"  preCondition="integratedMode" type="MyNameSpace.NoAccessHandler"/>
    </handlers>
</system.webServer>

E il codice del gestore:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MyNameSpace
{
    public class NoAccessHandler: IHttpHandler
    {

        #region IHttpHandler Members

        public bool IsReusable
        {
            get { return true; }
        }

        public void ProcessRequest(HttpContext context)
        {
            context.Response.StatusCode = 404;
        }

        #endregion
    }
}
    
risposta data 18.07.2014 - 16:41
fonte

Leggi altre domande sui tag