【发布时间】:2020-01-27 22:06:18
【问题描述】:
我有一个使用 primefaces 进行确认操作的命令按钮:
<p:commandButton value="Test"
rendered="..."
action="#{controller.actionMethod(param)}">
<p:confirm header="Confirmation" escape="false" message="This is a really long message test <br/>
This is a really long message test."/>
</p:commandButton>
我了解到关闭转义是一个潜在的 XSS 攻击漏洞,因此我正在尝试在消息中不使用换行符的情况下解决此问题(并允许 escape=true)
confirmDialog 是全局的:
<p:confirmDialog global="true" showEffect="fade" hideEffect="fade">
<p:commandButton value="Yes"
type="button" styleClass="ui-confirmdialog-yes" icon="ui-button-icon-left ui-icon ui-c ui-icon-check" />
<p:commandButton value="No"
type="button" styleClass="ui-confirmdialog-no" icon="ui-button-icon-left ui-icon ui-c ui-icon-close" />
</p:confirmDialog>
我已经尝试使用预换行来使用样式,但我没有运气。我在追求一个非问题吗?这真的是 XSS 漏洞吗?
【问题讨论】:
-
这能回答你的问题吗? Newline in <p:confirm message>
-
与@JasperdeVries 一起使用escape="false" 回答是可以的,只要您知道该框中的内容即可。如果是用户输入的数据,你永远不会想使用 escape="false" 但如果你总是内容的作者,那没关系,这正是 escape="false" 的用途。
-
@Melloware - 这些对话框完全由开发者控制,没有任何输入。
-
那就不用担心使用 escape="false"。
标签: jsf primefaces