摘要:<p:confirmDialog message>
屬性不會轉義HTML,因此會打開潛在的XSS攻擊漏洞。我該如何解決它?<p:confirmDialog消息>中的XSS vulrenability>
原來的問題(原標題爲:XSS攻擊:如何防止腳本注入應用的響應):
我的工作目前我面臨XSS攻擊問題JSF應用程序,我有對它做了幾項研究。但無法找到解決方案。我正在使用OWASP工具進行測試。我能夠在請求中阻止xss攻擊,但不能響應。對於請求我使用了篩選器來篩選請求並給出正確的輸出,但是響應不是由相同的解決方案處理的。一旦響應來自應用控制轉到OWSAP那麼我注入腳本內部和它得到顯示在瀏覽器:(
XHTML代碼:在OWSAP
<p:panel header="Regions">
<p:dataTable id="regionsTable"
var="region"
value="#{regionsBean.regions}"
rowKey="#{region.id}"
selectionMode="single"
selection="#{regionsBean.selectedRegion}">
<p:column styleClass="colID">
<f:facet name="header">ID</f:facet>
<h:outputText value="#{region.id}" />
</p:column>
<p:column>
<f:facet name="header">Region</f:facet>
<h:outputText value="#{region.regionDescription}" />
</p:column>
<p:column styleClass="colActionRegions">
<f:facet name="header">Action</f:facet>
<p:commandLink id="deleteRegionLnk"
oncomplete="deleteRegionConfirm.show()" update=":regionForm:dltDlg">
<p:graphicImage value="/resources/images/delete1616.png"/>
<f:setPropertyActionListener value="#{region}" target="#{regionsBean.forDelete}" />
</p:commandLink>
<p:tooltip id="toolTipDelete" for="deleteRegionLnk" value="Delete" showEffect="fade" hideEffect="fade" />
</p:column>
</p:dataTable>
</p:panel>
<p:confirmDialog id="dltDlg" message="You are about to delete the Region [#{regionsBean.forDelete.regionDescription}]. Proceed?" header="Delete Region" severity="alert" widgetVar="deleteRegionConfirm">
<p:commandButton id="confirm" value="Yes" styleClass="iot-button" update="regionsTable,growl" oncomplete="deleteRegionConfirm.hide()" actionListener="#{regionsBean.delete}" style="color: #FFF"/>
<p:commandButton id="decline" value="Cancel" styleClass="iot-button" onclick="deleteRegionConfirm.hide()" type="button" style="color: #FFF"/>
</p:confirmDialog>
響應:
如果您在此處看到上面的代碼,我將插入警報< .script> confirm(1); < ./script> .tag。
我試過的解決方案:
1)正在處理請求而不是響應的過濾器。
2)使用escape屬性標記內
3)內容安全策略(我使用mozila火狐)
<meta http-equiv="Content-Security-Policy" content="script-src 'self' https://apis.google.com;" />
感謝您的幫助提前。
感謝您的迴應。我正在使用primefaces 3.4.2有沒有解決這個問題的方法。因爲我看到src/main/java/org/primefaces/component/confirmdialog/ConfirmDialogRenderer.java中有修改,所以我需要修改3.4.2的jar並需要測試 – vinod
並嘗試轉義這種替代的 \t \t \t \t
\t \t \t \t \t的 \t \t \t \t \t \t \t \t \t \t \t \t \t小時:OUTPUTFORMAT> \t \t \t \t P:outputPanel> \t \t \t爲的消息p:confirmDialog –
vinod
感謝您的回答更新@balusC你總是希望我們:)讓我檢查修復 – vinod