2009-04-30 6 views
0

Aus einem Benutzerbericht, 'beim Bearbeiten foo. textboxBar erlaubt Sonderzeichen, die auf eine Warnung .net Fehler erzeugen save 'Führt nHibernate Escape Strings?

textboxBar.Text zu einem Objekt zuweisen und gespeichert unter Verwendung nHibernate

<property name="TextboxBar" length="255" not-null="false" /> 

Denken es nHibernate nicht entkommen Strings sein kann, aber nicht finden es in den Dokumenten.

Wird nHibernate 1.2.0 automatisch Strings entkoppelt, Link geschätzt?

Antwort

1

Ich bezweifle, dass es sogar Strings entkommen muss - ich würde erwarten, dass Werte in parametrisierten Anweisungen übergeben werden.

Ich vermute stark, dass dies nichts mit nHibernate zu tun hat - ich vermute, das ist nur ein ASP.NET-Fehler, obwohl zugegebenermaßen davon ausgegangen wird, dass es eine ASP.NET-Anwendung ist. Wenn dies der Fall ist, möchten Sie wahrscheinlich nur die Validierung für diese Seite deaktivieren.

Weitere Informationen finden Sie unter ASP.NET FAQ page on validation.

+0

Nagel auf den Kopf. Ich werde alles durchgehen und alles jetzt entkommen. Vielen Dank. – sre

1

Es ist nicht ganz klar, was die Situation aus Ihrer Frage ist, oder auch wenn dies ASP.NET ist, aber könnte der Benutzer Bezug genommen haben auf den "Eine potenziell gefährliche Anfrage.Form Wert wurde vom Client erkannt ..." Fehler Nachricht, die ASP.NET generiert?

Wenn dies der Fall ist, bezieht sich diese Fehlermeldung nicht auf NHibernate, sondern darauf, dass ASP.NET versucht, gefährliche Formulareingaben zu erkennen, bei denen es sich möglicherweise um einen Cross Site Scripting-Angriff handelt.

Um dies zu beheben, müssen Sie die Verantwortung für die HTML-Codierung aller Ihrer Ausgaben übernehmen. Wenn Sie Web-Formulare verwenden, sollten Sie diese Seite Direktive zu Ihrer Seite hinzufügen ...

<%@ Page ValidateRequest="false" ... %> 

... und dann stellen Sie sicher, dass Sie die Eingabe bestätigen sich selbst und/oder vorsichtig sind immer Ausgangs zu kodieren, wenn Sie umfassen es später in HTML.

Wenn Sie ASP.NET MVC verwenden, tun Sie dasselbe durch das Hinzufügen von [ValidateInput] Attribut zu Ihrem Controller-Aktion:

[AcceptVerbs(HttpVerbs.Post)] 
[ValidateInput(false)] 
public ActionResult Edit(...) 
{ 
    return View(); 
}