我有一个带有添加/编辑功能的jqGrid。为了防止跨站点脚本,我使用自动编码功能。我看看在beforeSubmit和afterSubmit方法中传递的数据,我看到编码工作得很好。但是当我通过单击“保存”关闭弹出窗口时,脚本仍会执行。 afterComplete方法显示我在没有任何编码的情况下键入的脚本。
行为也可以在演示页面中复制http://trirand.com/blog/jqgrid/jqgrid.html(实时数据操作 - >添加/编辑行)
如果我错过了一些明显的事情,或者我有什么其他方法可以阻止这种情况,请告诉我
答案 0 :(得分:0)
我不建议您使用旧的4.6版本的jqGrid(使用过i)。它有许多旧的错误,在jqGrid的更高版本中没有修复。 The demo例如使用免费的jqGrid 4.13.6。您可以轻松验证,可以在列<script>alert("Hello!");</script>
中放置一些代码,例如Client
,例如,在表单或内联编辑期间执行数据而不执行脚本。数据将作为字符串data
在本地保存在内部'<script>alert("Hello!");</script>'
中,但在将数据放入HTML页面之前,数据将根据$.jgrid.htmlEncode
进行编码。因此,如果指定了autoencode: true
,则不会执行脚本执行。