我很迷惑.我看到JSF 2.0具有隐含的CSRF保护: JSF 2.0如何阻止CSRF
另一方面,根据文章http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JSF-CSRF-Demo/JSF2.2CsrfDemo.html,我们应该将以下元素添加到faces-config.xml文件中JSF页面列表.
<protected-views>
<url-pattern>/csrf_protected_page.xhtml</url-pattern>
</protected-views>
Run Code Online (Sandbox Code Playgroud)
应该<protected-views>用于JSF 2.2 CSRF保护吗?
我正在探索JSF 2.2中的新功能(到目前为止非常酷),但我仍然不明白受保护的视图是如何工作的,我创建了一个带有facelet2链接的facelet1,如下所示:
<h:link styleClass="link" value="Go to protected page" id="link1"
outcome="/protected/facelet2.xhtml"></h:link>
Run Code Online (Sandbox Code Playgroud)
在我的faces-config.xml中我添加了这个:
<protected-views>
<url-pattern>/protected/facelet2.xhtml</url-pattern>
</protected-views>
Run Code Online (Sandbox Code Playgroud)
现在,当我运行页面时,在URL中添加了一个标记:
http://localhost:8080/<project>/protected/facelet2.faces?javax.faces.Token=1426608965211
Run Code Online (Sandbox Code Playgroud)
根据文档,如果令牌与服务器中的令牌不匹配,则不处理GET请求(我的理解是否正确?).
但是,如果我修改令牌(使用Firebug或浏览器中包含的开发工具),即使令牌已被修改,仍会处理请求.
难道我做错了什么?