带有JSF ajax请求的OWASP CSRF令牌

时间:2014-03-24 18:26:04

标签: ajax jsf csrf owasp

我们使用OWASP CSRF后卫保护了我们的网站并配置了TokenPerPage = true。我们使用JSF 2.0(myfaces)进行前端开发。

除非我们使用JSF ajax(),否则每件事情都会按预期工作。 当我们从页面提交ajax请求时,ajax请求成功但后续Http请求失败并显示消息

  

(“潜在的跨站点请求伪造(CSRF)攻击受阻(用户:%,ip:xxxx,uri:/ppr/secured/xxxx.faces,错误:请求令牌与页面令牌不匹配)”)。< / p>

以下是我的推测:

  • 在JSF中,浏览器地址栏中显示的URL始终是上一页/请求URL(因为JSF'POST'将请求提交给同一视图并使用前向调度程序)。来自页面的任何ajax请求都使用当前页面的URL。可能是ajax请求会覆盖令牌。

为了排除故障 - 我使用fiddler捕获了请求/响应并导出到文件。你可以用fiddler打开它。

owasp-Jsf-Ajax-issue-1.saz

此图片将有助于描述fiddler文件中的请求。

Fiddler_OWASP_CSRF_JSF_Ajax_issue.jpg

JSF代码-FYR:

<t:dataTable id="xyzTableId" value="#{varObject.additionalNotes}" var="additionalNote"><t:column>
       <h:inputText id="additionalNoteMsg" value="# {additionalNote.message}">
          <f:ajax event="blur" render="noteForm:xyzTableId:#{rowIndex}:displayId" onerror="printAjaxError" />
       </h:inputText></t:column>
</t:dataTable>
<t:commandButton type="button" value="Add Notes" id="button1"/>

0 个答案:

没有答案