Bryan Albrecht

ASP.NET Security

Einführung ASP.NET MVC

ASP.NET ist ein Produkt von Microsoft. Es bedeutet ausgeschrieben Active Server Pages. ASP.NET wird serverseitig ausgeführt. Im Gegensatz zu einer Scriptsprache, wie zum Beispiel PHP, wird der Code Kompiliert.

Es ist möglich Anfragen wie POSTs und GETs zu verarbeiten.

Um ASP.NET 4.5 und ältere Versionen ausführen zu können, braucht man einen IIS, welcher auf einem Windows Server läuft.

Aufbau ASP.NET App

MVC

MVC ist ein Pattern, welches für den Aufbau des Projektes zuständig ist.

Es bedeutet Model View Controller.

In diesem Aufbau beinhaltet das Model die Definition von den Daten. Diese Daten werden vom Controller aufbereitet und an die View weitergeleitet.

Controller

Zu den meisten Controller Methode gehört eine View. Das heisst, dass alle Methoden, welche Daten vom Controller auf eine View senden, eine dementsprechend benannte View benötigen.

Um eine Methode aus einem Controller aufrufen zu können, kann man die URL verwenden.

Im nächsten Beispiel wird die Methode TestMethode aus dem Controller MyController aufgerufen:

  1. http://meinetestseite.ch/MyController/TestMethode

Die Standard Methode für die Controller ist im RouteConfig File festgelegt. Ebenfalls in diesem File festgelegt ist der Standard-Parameter. Dieser kann man mit einem weiteren Schrägstrich anfügen:

  1. http://meinetestseite.ch/MyController/TestMethode/Parameter

Allgemeine Security

Im Internet ist es bei manchen Seiten sehr wichtig, dass nur Spezifische Personen auf alle Seiten Zugriff haben dürfen.

Je mehr verschiedene Rollen es auf einer Website gibt, desto schwerer ist es diese umzusetzen. Von Vorteil ist es, wenn man die verschiedenen Rollen Gruppen zuteilt. Diese Gruppen können dann Benutzer beinhalten.

Wenn man sehr viele Rollen vergeben hat, sollte man diese in einem Dokument festhalten. Dies wird sehr hilfreich sein, wenn man Berechtigungen anpassen muss.

Ebenfalls wichtig ist es, dass man die View den Rechten entsprechend anpasst. Das heisst, dass man keinen Link anzeigen soll, auf welchen der Benutzer keinen Zugriff hat.

Active Directory

Das Active Directory ist ein Zentrales Verwaltungssystem von Benutzern. In diesem System werden die Daten von Benutzern festgehalten.

Ebenfalls ist es möglich verschiedene Gruppen mit angepassten rechten zu erstellen. Diese Gruppen könne von anderen Gruppen erben, so dass man nicht jedem Benutzer die Rechte zuweisen muss.

Mit den Daten, welche im Active Directory gespeichert sind, kann man für verschiedene Logins benutzen. Aus diesem Grund eignet es sich Perfekt für die Benutzerverwaltung einer Website.

Verwenden von Attributen

Ein Attribut kann den Benutzer einschränken. Das heisst, dass es dem Benutzer den Zugriff auf eine Methode oder einen Controller verweigern kann.

  1. [AuthorizeAd(AllowedRoles = new[] { SecurityRoles.Administration })]
  2. public class HomeController : Controller
  3. {
  4.     [AuthorizeAd(AllowedRoles = new[] { SecurityRoles.Administration })]
  5.     public ActionResult AdminPage()
  6.     {
  7.         ViewBag.Message = "Your application description page.";
  8.         return View();
  9.     }
  10. }

Ob das Attribut vor einem Controller und oder vor einer Methode stehen kann, ist Definitionssache.

Auch möglich ist es, dass ein Attribut den Zugriff übers Active Directory regelt.

Ein Attribut könnte so aussehen:

  1. [AuthorizeAd(AllowedRoles = new[] { SecurityRoles.Administration })]

Error Pages

Wenn ein Fehler auf einer Website auftritt, kann eine Error Page angezeigt werden. Diese Page hat meistens einen Error Code. Dieser Code lässt sich auf die Fehlerquelle zurückführen.

Ein Beispiel sind die Codes, welche sich in den 400 Bereichen befinden. Diese Codes sind meistens Client Fehler. Ein Beispiel dafür ist zum Beispiel ein Berechtigungsfehler. Bei so einem Fehler wird der Code 403(Forbidden) angezeigt.

References

Das wichtigste an den Error Pages ist, dass sie aussagekräftig sind.