我有一个命令按钮,其中包含使用素数的确认操作:
<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>
我已经读到关闭 escape 是一个潜在的 XSS 攻击漏洞,所以我正在尝试解决此问题,而无需在消息中使用换行符(并允许 escape=true(
确认对话框是全局的:
<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 漏洞吗?
在消息中引入换行符的更好方法是使用此处所述的分面。通过这种方式,您可以摆脱这种XSS大惊小怪。
<p:confirmDialog header="Confirmation">
<f:facet name="message">
Are you sure you want to continue?<br/>Yes or no?
</f:facet>
</p:confirmDialog>
仍然如果你想走这条路,假设你在文档手册中使用了几次 Prime Faces 7 转义属性,而没有任何 XSS 警告。当我从用户那里获得文本输入而不是按钮输入时,我会更担心 XSS。