【发布时间】:2015-09-17 13:18:57
【问题描述】:
是否应该为匿名用户使用 CSRF 保护,还是违背了它的目的?
我有一个可以匿名访问的 URL。当使用适当的信息访问 URL 时,我的数据库中的一些值会更新。例如,客户可以在他们的订单确认页面上放置一些代码,该代码将向http://example.com/save-request 发出 POST 请求,并发送以下数据:
{orderId: 1234, referralCode: 'ABCDEF'}
当我收到此请求时,我会使用推荐代码更新我的数据库中的给定订单:
$order = Order::find(Input::get('orderId'));
$order->referral_code = Input::get('referralCode');
$order->save();
我试图保护此 URL 免受滥用,以便用户无法发送随机订单 ID 请求并尝试获取与其相关联的推荐代码。
想到了 CRSF 保护,但这意味着我需要先获取令牌,这需要另一个公共 URL。看起来这会让滥用变得稍微困难一些,但仍然有可能,因为滥用者可以简单地获取令牌,然后正常发出请求。
是否有任何策略可以防止此类滥用?
【问题讨论】:
-
也许这个问题更适合 progammers.stackexchange。可以转过来还是我应该重新发布到那里?
-
在订单确认页面发出 POST 请求时,您的客户是否已经通过身份验证?或者他们是匿名的?
-
@light 他们是匿名的。