我们使用OWASP CSRF后卫保护了我们的网站并配置了TokenPerPage = true。我们使用JSF 2.0(myfaces)进行前端开发。
除非我们使用JSF ajax(),否则每件事情都会按预期工作。 当我们从页面提交ajax请求时,ajax请求成功但后续Http请求失败并显示消息
(“潜在的跨站点请求伪造(CSRF)攻击受阻(用户:%,ip:xxxx,uri:/ppr/secured/xxxx.faces,错误:请求令牌与页面令牌不匹配)”)。< / p>
以下是我的推测:
为了排除故障 - 我使用fiddler捕获了请求/响应并导出到文件。你可以用fiddler打开它。
此图片将有助于描述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"/>