我的问题与此类似:CQ5: 403 Forbidden occurs when call a Post servlet但在AEM 6.1中
根据上述主题的接受答案,我必须从Apache Sling Referrer Filter中删除POST。我想知道这个动作是否对我的系统有害? 并且有更好的方法来解决这个问题吗?
p / s:抱歉我的英文。
答案 0 :(得分:3)
如果您在作者模式下测试代码,则请求会出现403 forbidden
错误。这需要csrf令牌(在AEM 6.1中引入,以针对CSRF attacks执行来自浏览器的POST
,PUT
和DELETE
请求的检查。在服务器端的表单提交上验证CSRF令牌。如果添加了granite.jquery
依赖项,则会加载CSRF保护框架,或者您可以声明依赖项granite.csrf.standalone
以使用该框架。在发布时,它应该在登录前正常工作。
答案 1 :(得分:0)
如果您尝试从AEM外部向AEM实例发布数据,那就是解决方案。出于安全原因,不建议使用它。但如果必须,您可以在POST请求中添加身份验证并设置CSRF安全措施。除此之外,您可以设置调度程序以仅允许POST请求到选择性路径并阻止其余路径。即使这样,所有这些并不能保证完全的安全性。
对于替代方案,我不确定您的用例是什么,但您可以在AEM中创建表单并通过该表单以及您尝试将当前发送到AEM的任何外部资源处理POST,包括此表单作为iframe中。
答案 2 :(得分:0)
修改内容需要POST调用。除非您的实例不受调度员和Akamai服务器在AEM前面的更多请求处理机制的保护,否则将无任何伤害,您可以在调度员处进行请求过滤,在此之前甚至在akamai级别并且仅允许确切的发布请求特定于应用程序。
调度过滤器示例:
显示只允许使用@SlingServlet的post调用(paths =" / bin / sling / myproj / exampleauthhandler")
/filter {
/0001 { /glob "*" /type "deny" }
/0999 { /type "allow" /method "POST" /url "/bin/sling/myproj/exampleauthhandler" }
}
您可以找到有关AEM调度员的更多信息
https://docs.adobe.com/docs/en/dispatcher/disp-config.html
我们还有一些名为PUT和PATCH的方法,这些方法也值得,但不适合实时场景。
PATCH :: https://tools.ietf.org/html/rfc5789
也是一个很好的讨论,你可以找到PUT与PATCH