ASP.NET 4.0 - ValidateRequest Verhalten

Es gibt im .NET 4.0 kleine Detailverbesserungen, die auch interessante Side-Effekte zur Folge haben. Einer dieser Effekte betrifft das Attribut ValidateRequest für Webformulare, das entweder in der web.config bzw. in der Page-Direktive auf den Wert "false" gesetzt werden kann. Im Framework bis .NET 3.5 SP1 wird damit die Prüfung auf gefährlichen Code abgeschaltet. In der Regel sollte das auch nur gemacht werden, wenn die Entwickler wirklich wissen, wie sie sich vor schadhaftem Code schützen können, anderseits bedeutet die Deaktivierung mehr Fluch als Segen. Neu wird die Überprüfung viel früher in der Request Pipeline ausgeführt, um ein verbessertes Sicherheitsverhalten zu gewährleisten. Der Nachteil: Das ValidateRequest-Attribut arbeitet auf Page - Level - Ebene und die Prüfung lässt sich im Standardverhalten nicht mehr deaktivieren.

Abbildung 1
Abbildung 1: Codeausschnitt mit ValidateRequest="false" in der Direktive

Bei Eingabe eines HTML-Tags wird die Verarbeitung trotz ValidateRequest="false" abgebrochen.

Abbildung 2
Abbildung 2: ASP.NET-Fehlermeldung trotz Deaktivierung von ValidateRequest

Damit in ASP.NET 4.0 das vorherige Verhalten erzwungen werden kann, gibt es das Attribut requestValidationMode="2.0" in der httpRuntime-Konfiguration. Das setzen dieser Eigenschaft erfolgt in der web.config. Das Schöne an der Fehlermeldung in Abbildung 2, ich muss nicht lange nach dem Fehler suchen, da in der Beschreibung der Lösungsweg beschrieben ist.

Abbildung 3
Abbildung 3: Gewünschte Ausgabe

Warum deaktiviere ich ValidateRequest?

Interessant sind dabei immer die Philosophien, die hier verschiedene Interpretationen zulassen. Eine davon ist die Regel, dass eine Anwendung bei einem Fehler sofort beendet werden soll. Bei der Interaktion mit einem Anwender hat diese Regel jedoch Auswirkung auf die Benutzbarkeit. Hier heisst es wieder die Fehlerbehandlung muss robust sein und der Benutzer muss die Möglichkeit haben, seinen Fehler zu korrigieren. Mit ValidateRequest=“true“ ist diese Empfehlung nicht so einfach umsetzbar.

Was ist das Problem

Im Hintergrund verrichtet auch die Ereignisanzeige sehr gut ihre Arbeit. Treten solche Fehler auf, werden diese auch protokolliert.

Abbildung 4:
Abbildung 4: Eintrag in der Ereignissanzeige "Anwendung"

Bei Art und Häufigkeit der Fehlermeldungen können Rückschlüsse darüber gezogen werden, ob es sich um einen Eingabefehler oder gezielten Angriffsversuch handelt. Wenn diese Kontrolle deaktiviert wird, ist es empfehlenswert auch den Mehraufwand zu unternehmen, die Validierungsfehler zu protokollieren, damit diese Rückschlüsse weiterhin gezogen werden können.

  •  
  • 0 Kommentar(e)
  •  

Mein Kommentar

Über jeden weiteren Kommentar in diesem Post benachrichtigen.

Zurück

Translate this page

Kategorien

  • [-].NET Development (215)
  • [-]Datenbank (26)
  • HTML (1)
  • Konfiguration (12)
  • Mind Map (10)
  • Off-topic (9)
  • Open Source (3)
  • Qualität (7)
  • Sharepoint (6)
  • Sicherheit (2)

Archiv

Social Bookmarking

Bookmark bei: Mr. Wong Bookmark bei: Webnews Bookmark bei: Icio Bookmark bei: Oneview Bookmark bei: Linkarena Bookmark bei: Favoriten Bookmark bei: Seekxl Bookmark bei: Favit Bookmark bei: Social Bookmarking Tool Bookmark bei: Power Oldie Bookmark bei: Bookmarks.cc Bookmark bei: Newskick Bookmark bei: Newsider Bookmark bei: Linksilo Bookmark bei: Readster Bookmark bei: Folkd Bookmark bei: Yigg Bookmark bei: Digg Bookmark bei: Del.icio.us Bookmark bei: Reddit Bookmark bei: Simpy Bookmark bei: StumbleUpon Bookmark bei: Slashdot Bookmark bei: Netscape Bookmark bei: Furl Bookmark bei: Yahoo Bookmark bei: Spurl Bookmark bei: Google Bookmark bei: Blinklist Bookmark bei: Blogmarks Bookmark bei: Diigo Bookmark bei: Technorati Bookmark bei: Newsvine Bookmark bei: Blinkbits Bookmark bei: Ma.Gnolia Bookmark bei: Smarking Bookmark bei: Netvouz Information