jqgrid autoencode = true编码postdata

时间:2013-03-13 10:07:09

标签: jqgrid html-escape-characters

我正在尝试修复我的Web应用程序中的XSS漏洞,而且我遇到了jqGrid。

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

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

那么,是否可以仅对从数据库中检索的数据进行编码并发布数据呢? 目前,我禁用了autoencode并在我的所有列上添加了格式化程序以逃避所有文本。这是唯一的方法吗?

1 个答案:

答案 0 :(得分:2)

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