20 Stimmen

Wie lässt sich der Zugriff am besten nach IP-Adresse beschränken?

Für eine ASP.NET-C#-Anwendung müssen wir den Zugriff auf der Grundlage der IP-Adresse beschränken. Wie lässt sich dies am besten bewerkstelligen?

0 Stimmen

Eine ähnliche Frage hatte die Antwort, die Sie suchen... stackoverflow.com/a/6108168/80161

19voto

Mitch Wheat Punkte 287474

Eine Möglichkeit ist die Verwendung einer HttpModule .

Aus dem Link (für den Fall, dass er jemals verschwindet):

/// <summary>
/// HTTP module to restrict access by IP address
/// </summary>

public class SecurityHttpModule : IHttpModule
{
 public SecurityHttpModule() { }

    public void Init(HttpApplication context)
    {
        context.BeginRequest += new EventHandler(Application_BeginRequest);
    }

    private void Application_BeginRequest(object source, EventArgs e)
    {
        HttpContext context = ((HttpApplication)source).Context;
        string ipAddress = context.Request.UserHostAddress;
        if (!IsValidIpAddress(ipAddress))
        {
            context.Response.StatusCode = 403;  // (Forbidden)

        }
    }

    private bool IsValidIpAddress(string ipAddress)
    {
        return (ipAddress == "127.0.0.1");
    }

    public void Dispose() { /* clean up */ }
}

Sobald die HTTP-Modulklasse erstellt ist, müssen Sie sie im Abschnitt httpModules Ihrer web.config-Datei registrieren, etwa so:

<configuration>
    <system.web>
        <httpModules>
            <add name="SecurityHttpModule" type="SecurityHttpModule"/>
        </httpModules>
    </system.web>
</configuration>

Dadurch wird das Modul der ASP.NET-Anforderungspipeline für Ihre Webanwendung hinzugefügt.

1 Stimmen

Dies ist ein guter Ansatz, insbesondere wenn Sie einen Konfigurationsabschnitt für die erlaubten IP-Adressen hinzufügen

2 Stimmen

Was ist mit IP-Bereichen?

1 Stimmen

Die web.config-Syntax, die Sie schreiben, ist gut für IIS6 / Cassini. Für IIS 7 und höher sollte sie unter <system.webServer> statt <system.web> und <modules> statt <httpModules> stehen.

9voto

Tom Anderson Punkte 10636

Hier ist ein Artikel von Microsoft wie dies zu bewerkstelligen ist.


Einstellen der Ordnersicherheit nach IP-Adresse oder Domänenname

Der Apache verwendet die Allow- und Deny-Direktiven, um die Sites zu bestimmen, die auf eine bestimmte Website oder einen bestimmten Ordner zugreifen dürfen. Der Apache bietet jedoch eine diskretionäre Zugriffskontrolle; Sie müssen entweder alle Sites ablehnen und eine spezifische Liste von Sites oder IP-Adressen angeben, die auf einen Ordner zugreifen dürfen, oder alle Sites zulassen und nur die Sites ablehnen, auf die Sie keinen Zugriff haben möchten. Wenn Sie zum Beispiel die folgende Direktive verwenden, wird allen Client-Computern der Zugriff verweigert, es sei denn, sie werden als Teil der domain.com-Domäne erkannt:

Verweigern von allen
Erlaubt von .domain.com

IIS funktioniert auf die gleiche Weise. Allen Clients wird der Zugriff ausdrücklich verweigert oder gewährt, mit Ausnahme derjenigen, die in der Liste aufgeführt sind.

Zugriffskontrolle für bestimmte Ordner oder Standorte definieren

  • Melden Sie sich als Administrator am Webserver an.

  • Klicken Sie auf Start, zeigen Sie auf Einstellungen, und klicken Sie dann auf Systemsteuerung.

  • Doppelklicken Sie auf Verwaltung, und doppelklicken Sie dann auf Internetdienste-Manager.

  • Wenn Sie den Zugriff für die gesamte Website einschränken möchten, wählen Sie die Website aus der Liste der verschiedenen bedienten Websites im linken Fensterbereich aus.

  • Wenn Sie den Zugriff nur auf einen bestimmten Ordner beschränken möchten, klicken Sie auf den gewünschten Ordner.

  • Klicken Sie mit der rechten Maustaste auf die Website oder den Ordner, und klicken Sie dann auf Eigenschaften.

  • Klicken Sie auf das Feld Verzeichnissicherheit.

  • Wenn Sie den Zugriff auf eine bestimmte Gruppe von Websites beschränken, aber den Zugriff auf alle anderen Websites verweigern möchten, klicken Sie auf Verweigerter Zugriff.

  • Wenn Sie allen Clients standardmäßig Zugriff gewähren, aber eine bestimmte Liste von Clients ausschließen möchten, klicken Sie auf Zugriff gewährt.

  • Um die Liste der Hosts oder Domains in der Ausnahmeliste zu aktualisieren, klicken Sie auf Hinzufügen.

  • Wenn Sie der Liste einen einzelnen Computer hinzufügen möchten, klicken Sie auf Einzelner Computer, geben Sie die IP-Adresse in das entsprechende Feld ein, und klicken Sie dann auf OK.

  • Um eine Reihe von Computern in einem bestimmten Adressbereich hinzuzufügen, klicken Sie auf Computergruppe, geben Sie die IP-Adresse für das Netzwerk in das entsprechende Feld ein, geben Sie die Subnetzmaske für den zu konfigurierenden Netzwerkbereich ein, und klicken Sie dann auf OK.

  • Um Computer anhand ihres identifizierten Domänennamens hinzuzufügen, klicken Sie auf Domänenname, und geben Sie dann den Domänennamen in das entsprechende Feld ein.

  • Klicken Sie auf Eigenschaften, geben Sie den Domänennamen ein, und klicken Sie dann auf OK.

  • Klicken Sie auf OK und dann auf OK.

ANMERKUNG : Wenn Sie Domänennamensbeschränkungen verwenden, muss der Server bei jeder Anfrage eine umgekehrte DNS-Suche durchführen, um den registrierten Domänennamen des Hosts zu überprüfen. Microsoft empfiehlt, dass Sie nach Möglichkeit eine IP-Adresse oder einen Netzwerkbereich verwenden.

1 Stimmen

Dies ist einfach, wenn Sie eine kleine Liste statischer Adressen haben, die Sie blockieren oder zulassen möchten. Wenn Sie etwas Programmatisches brauchen, versuchen Sie die Antwort von @Mitch Wheat. +1

1 Stimmen

Mit dieser Methode können Sie auch IP-Bereiche hinzufügen, was ebenfalls nützlich ist.

0 Stimmen

Ich würde kein "allow all from domain.com" hinzufügen, da dies bei jeder Anfrage eine IP-Suche verursacht. Es wäre besser, einen bestimmten IP-Bereich zu verwenden.

8voto

bluskye Punkte 11

In IIS 7 lässt sich die IP am besten über die Konfigurationsdatei einschränken.

Vollständiger Artikel:
http://boseca.blogspot.com/2010/12/programmatically-addremove-ip-security.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X