nHibernateは文字列をエスケープしますか?
-
03-07-2019 - |
質問
ユーザーレポートから、「fooを編集するとき。 textboxBarは、保存時に警告.netエラーを生成する特殊文字を許可します '
textboxBar.Textはオブジェクトに割り当てられ、nHibernateを使用して保存されます
<property name="TextboxBar" length="255" not-null="false" />
それは、nHibernateが文字列をエスケープせずに、ドキュメント内で見つからない可能性があると考える場合。
nHibernate 1.2.0は文字列を自動的にエスケープしますか?
解決
文字列をエスケープする必要さえないことを疑います-パラメータ化されたステートメントで値が渡されることを期待します。
これはnHibernateとは何の関係もないと強く疑います-これは単なるASP.NETエラーであると思われますが、それは確かにASP.NETアプリケーションであると仮定しています。この場合、おそらくそのページの検証をオフにするだけです。
詳細については、 ASP.NETの検証に関するFAQページを参照してください。 。
他のヒント
質問の状況や、これがASP.NETであるかどうかは完全には明らかではありませんが、ユーザーが「潜在的に危険なRequest.Formの値がクライアントから検出されました」を参照している可能性があります&#8230; &quot; ASP.NETが生成するエラーメッセージ?
その場合、このエラーメッセージはNHibernateに関連するものではありませんが、デフォルトでは、ASP.NETはクロスサイトスクリプティング攻撃の試みである可能性のある危険なフォーム入力の検出を試みます。
これを修正するには、すべての出力をHTMLエンコードする責任を負う必要があります。 Webフォームを使用している場合は、このページディレクティブをページに追加する必要があります...
<%@ Page ValidateRequest="false" ... %>
...そして、入力を自分で検証するか、後でHTMLに含めるときに常に出力をエンコードするように注意してください。
ASP.NET MVCを使用している場合、コントローラーアクションに[ValidateInput]属性を追加することで同じことを行います。
[AcceptVerbs(HttpVerbs.Post)]
[ValidateInput(false)]
public ActionResult Edit(...)
{
return View();
}