3

我正在尝试修复我的 Web 应用程序中的 XSS 漏洞,但我被 jqGrid 卡住了。

我为我的所有网格激活了“自动编码”,文档说:“当设置为真编码(html 编码)时,传入(来自服务器)和发布的数据(来自编辑模块)。”。

我的问题是我不明白为什么对发布的数据进行编码。这样我就可以在我的数据库中获取 html 转义文本。所以这个数据库不再被其他应用程序读取(或者它必须解码所有文本),此外数据库搜索不再起作用。

那么,是否可以只对从数据库中检索到的数据进行编码并按原样发布数据?目前,我禁用了自动编码并在所有列上添加了格式化程序以转义所有文本。这是唯一的方法吗?

4

1 回答 1

2

您可以使用serializeEditData(在使用表单编辑的情况下)、serializeRowData(在使用内联编辑的情况下)或serializeCellData(在使用单元格编辑的情况下)更改将在编辑期间发送到服务器的数据。例如,要解码数据,您可以使用$.jgrid.htmlDecode. 您可以枚举发布数据的所有属性并解码相应属性的值。或者,您可以在服务器端使用对发布数据的解码。您在服务器上使用的任何技术都提供了可用于解码的简单方法。例如,在 ASP.NET 中,可以使用HttpServerUtilityHtmlDecode的/HtmlEncode方法。

于 2013-03-13T12:01:52.107 回答