编码/解码TextBox

时间:2011-06-06 11:36:36

标签: c# asp.net escaping html-encode

我使用Asp.Net 4,C#和MS SQL。

对于我的网站,我使用MS默认解决方案来防止跨站点脚本。

我还习惯在我的逻辑中对所有用户的输入进行编码,以便可以将这些数据存储在我的数据库中。

目前我正在使用GridView进行一些基本的CRUD操作,但我遇到了问题。

  • 创建:用户可以插入任何输入,我的逻辑将ENCODE并保存在数据库上。
  • 阅读:GridView可以在“标签”中显示数据库中的用户输入,结果是已解码,这要归功于字段属性“HtmlEnscape True或False。
  • 更新:这是我的问题!在编辑时,TextBox显示来自DataBase Encoded的用户输入(以这种方式保存)但我需要再次解码以向用户显示,以便以友好的方式进行编辑并重新保存。

我的问题: - 怎么做? - 因为我的应用程序中的许多页面中有很多TextBox,如何集中这种行为?

谢谢你们的帮助!

1 个答案:

答案 0 :(得分:3)

首先,我要说在存储到数据库之前不应该编码。您可以在输出点进行编码 - 然后将其放入文本框,网格或任何位置。

这有一些优点;

  1. 您与格式无关 - 您可以将数据存储为HTML,XML,JSON或其他内容,因为您在存储时没有将自己锁定为单一格式。
  2. 如果您正在搜索这些字段,它会使搜索更容易。
  3. 如果您正在使用的编码功能中存在错误,则最终可能会存储不安全的值。通过在输出点进行编码,您可以使用非错误的编码器替换编码器,或使用黑名单而不是白名单替换编码器,而无需查看所有数据,将其拉出,解码并重新编码。 / LI>

    对于文本框,实际编码取决于文本框的类型 - 单行文本框是属性编码,多行文本框是HTML编码,并使用asp.net文本框控件编码的文本属性为您,使用正确的方法。

    通过存储“原始”HTML,您无需解码,因为控件是自动编码的,您无需集中管理。