为什么 p_auth 验证在 Liferay 6 中不起作用?
Why p_auth validation is not working in Liferay 6?
我正在使用 Liferay 6.2-ce-ga3、primefaces 6 和 JSF2.1。我为我的 portlet 启用了 CSRF 保护,在 liferay portal-ext.properties 和 portlet portal-ext.properties:
中添加了以下代码
auth.token.check.enabled=true
auth.token.impl=com.liferay.portal.security.auth.SessionAuthToken
此外,我在 portlet.xml
中添加了
<init-param>
<name>check-auth-token</name>
<value>true</value>
</init-param>
为了测试,我从我的 form
url 中删除了 p_auth=<code>
,然后我提交了表单,它成功了。这不好,我不应该允许没有令牌的请求。
- 我忘记在配置中添加过滤器了吗?
- liferay如何检查p_auth?
- 我应该像这样 tutorial 在我的 bean 中手动检查 p_auth 令牌吗?
Liferay 的 p_auth
令牌在 portlet 生命周期的 ACTION_PHASE 期间防止 CSRF。我相信它在 Liferay 6.2 中默认启用,因此您不需要为它配置任何东西。
必须存在 p_auth
标记才能在 ACTION_PHASE 期间正确提交表单。然而,the p_auth
parameter has no effect during the RESOURCE_PHASE which is the phase where JSF Ajax form submissions are executed. So you may be dealing with a JSF Ajax request. Thankfully, JSF also has its own CSRF protection enabled by default in the view state。因此,当您使用 Liferay Faces 时,您可以安全地提交 Ajax 和非 Ajax 表单提交。
如果您确认 p_auth
在非 Ajax 表单提交期间没有效果,则可能存在安全漏洞(或您的配置存在问题)。您应该更新到最新版本的 Liferay Portal* 并重新测试。如果仍有问题,请报告 secure 问题:https://issues.liferay.com/secure/CreateIssue.jspa?pid=10952&issuetype=1.
*Liferay Portal 6.2 GA6 is the latest in the 6.2 line, and Liferay Portal 7.0 GA7 是总体上最新的 CE 版本。当然,有些 EE 版本可能也有更多错误修复。
我正在使用 Liferay 6.2-ce-ga3、primefaces 6 和 JSF2.1。我为我的 portlet 启用了 CSRF 保护,在 liferay portal-ext.properties 和 portlet portal-ext.properties:
中添加了以下代码auth.token.check.enabled=true
auth.token.impl=com.liferay.portal.security.auth.SessionAuthToken
此外,我在 portlet.xml
中添加了<init-param>
<name>check-auth-token</name>
<value>true</value>
</init-param>
为了测试,我从我的 form
url 中删除了 p_auth=<code>
,然后我提交了表单,它成功了。这不好,我不应该允许没有令牌的请求。
- 我忘记在配置中添加过滤器了吗?
- liferay如何检查p_auth?
- 我应该像这样 tutorial 在我的 bean 中手动检查 p_auth 令牌吗?
Liferay 的 p_auth
令牌在 portlet 生命周期的 ACTION_PHASE 期间防止 CSRF。我相信它在 Liferay 6.2 中默认启用,因此您不需要为它配置任何东西。
必须存在 p_auth
标记才能在 ACTION_PHASE 期间正确提交表单。然而,the p_auth
parameter has no effect during the RESOURCE_PHASE which is the phase where JSF Ajax form submissions are executed. So you may be dealing with a JSF Ajax request. Thankfully, JSF also has its own CSRF protection enabled by default in the view state。因此,当您使用 Liferay Faces 时,您可以安全地提交 Ajax 和非 Ajax 表单提交。
如果您确认 p_auth
在非 Ajax 表单提交期间没有效果,则可能存在安全漏洞(或您的配置存在问题)。您应该更新到最新版本的 Liferay Portal* 并重新测试。如果仍有问题,请报告 secure 问题:https://issues.liferay.com/secure/CreateIssue.jspa?pid=10952&issuetype=1.
*Liferay Portal 6.2 GA6 is the latest in the 6.2 line, and Liferay Portal 7.0 GA7 是总体上最新的 CE 版本。当然,有些 EE 版本可能也有更多错误修复。