Java Stripes框架:如何禁用表单中的字符串转义

Java Stripes框架:如何禁用表单中的字符串转义,java,web-applications,stripes,Java,Web Applications,Stripes,我正在使用stripes框架实现一个web应用程序。为了避免各种攻击,文本被净化存储到数据库中,净化过程包括HTML实体的编码 当我做一个带条纹的表格时,我的问题就显现出来了。当表单开始为空时,一切正常。但是,当用户之前输入了this表单,并且现有值是从DB中提取的,在action bean中设置,然后由stripes表单标记显示时,stripes会再次转义它。这将导致字符串的双重转义 我能告诉stripes我知道我在做什么,我给你的字符串已经转义了吗?似乎最好的解决方案就是不要对有问题的字段使

我正在使用stripes框架实现一个web应用程序。为了避免各种攻击,文本被净化存储到数据库中,净化过程包括HTML实体的编码

当我做一个带条纹的表格时,我的问题就显现出来了。当表单开始为空时,一切正常。但是,当用户之前输入了this表单,并且现有值是从DB中提取的,在action bean中设置,然后由stripes表单标记显示时,stripes会再次转义它。这将导致字符串的双重转义


我能告诉stripes我知道我在做什么,我给你的字符串已经转义了吗?

似乎最好的解决方案就是不要对有问题的字段使用stripes。如果在jsp中替换,例如:

<stripes:textarea name="userEntryComment"/>

${actionBean.userEntryComment}

然后,根本不调用Exception stripes来生成第二个版本的HTML。此外,由于在本例中不使用标记,因此不会重新转义字符串。

HTML实体的编码和解码由条带处理,因此实际上不需要在数据库中存储编码的HTML实体。只需从清理过程中删除HTML实体的编码,条纹就会安全地处理数据


还有一点需要说明:以HTML等表示格式存储模型数据()可能被认为是一种不好的做法。HTML实体当然也是HTML格式的数据。在执行各种其他操作(如搜索、发送文本电子邮件等)时,它们会限制/阻碍您对数据的使用。

因此,在数据库中存储未初始化的字符串是不允许的:(关于存储编码的HTML的评论是正确的。但是,将编码的HTML存储在DB中是保证针对HTML/js注入和XSS提供完美保护的最佳方式。这样,您就不需要真正记住转义输出。无论如何,这并不能回答我的问题。限制允许的字符会更安全。任何这样,您可能会发现这也很有趣:
<textarea name="userEntryComment">${actionBean.userEntryComment}</textarea>