Codeigniter:Paypal IPN 和 csrf_protection
我正在使用 codeigniter-paypal-ipn 并启用了 csrf_protection。 这似乎阻止了从 Paypal 到我的 IPN 控制器的访问。如果我禁用 csrf_protection 它工作得很好,启用 csrf_protection 后,paypal IPN 服务会抛出 500 内部服务器错误。
有没有办法在不禁用 csrf_protection 的情况下解决这个问题? 如果没有,我可以禁用该控制器的 csrf_protection 吗?
谢谢。
I'm working with codeigniter-paypal-ipn and have csrf_protection enabled.
This seems to block the access from Paypal to my IPN controller. If i disable csrf_protection it works just fine, with csrf_protection enabled, paypal IPN service throws a 500 Internal Server Error.
Is there a way to solve this without disabling the csrf_protection?
If not, can i disable the csrf_protection just for that controller?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我知道问题已经得到解答,但我以类似的方式做到了这一点,而没有破解 CI 核心。我将以下内容添加到我的 application/config/config.php 文件中:
该数组可以包含您喜欢的任何路径。上面的示例将适用于以“api”开头的任何路径。
然后,我添加了以下文件:application/core/MY_Input.php:
I know the question has been answered, but I did it in a similar way without hacking the CI core. I added the following to my application/config/config.php file:
The array can include any paths you like. The example above will apply to any paths that begin with 'api'.
Then, I added the following file: application/core/MY_Input.php:
Alex 是 codeigniter-paypal-ipn 的创建者。目前我不知道如何让 IPN 帖子在启用 csrf_protection 的情况下工作。如果你看看另一种语言/框架是如何做到的,例如 django-paypal IPN - 他们添加了 特定 IPN 控制器的 CSRF 豁免。
正如 imm 所说,这种类型的细粒度控制在 CodeIgniter 中不可用,直到具有 此拉取请求已合并(如果您等不及,请尝试下面的caseyamcl方法,因为它不涉及攻击 CI 核心...)
我已经更新了我的项目的 README 使 CSRF 情况更加清晰。
Alex the creator of codeigniter-paypal-ipn here. At the moment I'm not aware of a way to get the IPN post working with csrf_protection enabled. If you look at how another language/framework does it, e.g. django-paypal IPN - they add a CSRF exemption to the specific IPN controller.
As imm says, this type of fine-grained control won't be available in CodeIgniter till a version with this pull request is merged (if you can't wait, try caseyamcl's approach below as it doesn't involve hacking CI core...)
I've updated my project's README to make the CSRF situation clearer.
有人在 http://ellislab.com/forums/viewthread/200625/ 上提出了类似的问题,禁用单个控制器的 csrf 将在下一个版本中提供。
Someone asked a similar question on http://ellislab.com/forums/viewthread/200625/, disabling csrf for a single controller will be available in the next release.