如何在JSF中解析AJAX请求的跨站点脚本

时间:2014-08-13 15:32:01

标签: javascript ajax jsf xss

我一直在努力为AJAX请求找到跨边脚本的解决方案

这就是流程的方式:

1)屏幕上有一个文本框,我们正在使用RichEditor

2)在文本框中,您可以单击编辑按钮,该按钮显示一个新面板

3)单击后,新面板将打开,在新面板中,您可以编辑文本并更新它。

4)在新面板中有一个“继续”按钮,如果单击它将更新辅助bean中的文本,关闭新面板,并刷新原始面板中的文本区域。

单击继续单击onComplete时,它们会隐藏新面板或当前面板并重新呈现原始面板(有一个AJAX请求)。因此,当我们发送该请求时,我们的安全团队使用Paros Tool在其上插入恶意脚本(警报('XSS attack!'))。由于它是一个AJAX请求,并通过AJAX引擎获得响应,我无法弄清楚如何过滤或确保脚本不会运行,如果是坏脚本。

可能需要在AJAX响应后立即运行Javascript,但我不知道该怎么做。基本上我的目标是避免跨侧脚本,如果有人使用外部工具将恶意代码放入AJAX请求中。

我们正在使用JSF 1.2和RichFaces。

以下是原始面板的代码片段:

<tr valign="top">
<td><h:outputText styleClass="formLabel" value="Text:" /></td>
<td colspan="3">
    <h:panelGroup styleClass="formTextMiddle" border="0" id="TextGroupFrom_aPanel">
        <div class="editTemplateSmallScrollBar">
            <ui:repeat value="#{backingBean.template.Parts}" var="part">
                <a4j:commandLink ajaxSingle="true"
                    action="#{backingBean.editpart}"
                    rendered="#{part.widget}"
                    reRender="#{backingBean.panelName}Panel,#{backingBean.reRenderList}"
                    oncomplete="Richfaces.showModalPanel('#{backingBean.panelName}Panel',{top:200});">
                    <f:setPropertyActionListener value="#{part.generatedName}" target="#{backingBean.partName}" />
                    <h:graphicImage value="/img/#{part.image}" style="border:0" alt="#{part.generatedName}" />
                </a4j:commandLink>
                <h:outputText value="#{part.value}" escape="false" rendered="#{!part.widget}" />                                                                                                    
            </ui:repeat>
        </div>
    </h:panelGroup>
</td>
</tr>

以下是打开的新面板的代码段:

<h:panelGroup>
    <a4j:commandButton styleClass="rich-button" align="right"
        oncomplete="if (#{facesContext.maximumSeverity!='Error'}) {Richfaces.hideModalPanel('aPanel');reRenderTextFrom_aPanel();}"
        value="Continue" action="#{backingBean.updateParts}">
    </a4j:commandButton>
    <a4j:jsFunction name="reRenderTextFrom_aPanel" reRender="TextGroupFrom_aPanel"></a4j:jsFunction>
</h:panelGroup>

0 个答案:

没有答案