建议何时验证PayPal IPN?
选项 1 - 在处理程序 ipn 发布期间进行验证,然后保存 ipn 并将其排队(如果有效)。
- 优点:攻击者无法通过发送虚假 IPN 来填充您的数据库
- 缺点:
- ipn 发布需要更长的响应时间,因为您需要发出 Web 请求进行验证,然后才能在 IPN 处理程序中使用 200 OK 进行响应
- 攻击者可以让 Web 服务器忙于验证虚假 IPN
选项 2 - 延迟验证,保存并排队 ipn,使用 200 响应,然后在处理队列时进行验证。
- 优点: 快速响应PayPal IPN
- 缺点: 攻击者可以通过发送虚假 IPN 来填充您的数据库
或者您是否确实有其他措施来避免这两个选项的问题?
编辑:我正在使用PayPal自适应支付API,并且想知道使用该API时推荐的做法是什么。
PayPal现在支持发送共享机密而不是回发验证。我更喜欢这个,前提是(a)您的按钮在发布时使用HTTPS,(a)您的notify_url
使用HTTPS。
回发验证存在许多问题,首先是要求以相同的顺序使用相同的 POST 变量。这是不可实现的,例如,在你没有这种控制级别的 servlet 中。然而,事实上,这似乎并不重要,这让人对程序的其他安全方面产生了怀疑。