首页 > 解决方案 > 保护 ASHX Web Handler 不被用户调用

问题描述

我正在使用一家调查广告公司来奖励用户通常会购买的东西。它是一个 JavaScript SDK,我可以订阅 Survey_Finished 事件。在那种情况下,我通过 AJAX 调用我的 ASHX 处理程序,它通过查询字符串传递用户名。处理程序然后获取用户名,并更新 SQL 授予用户他们的奖品。

用户真正需要做的就是查看页面源代码,获取 ASHX 处理程序的 url 并自己调用它,以便能够滥用系统并获得他们想要的尽可能多的奖品。

我怎样才能确保这一点,以确保我的 Web 应用程序是唯一能够调用 ASHX 处理程序的东西?

标签: javascript.nethandlerashx

解决方案


在数据库的表中创建一个 GUID 作为折扣的关键。应用折扣后锁定折扣,并在签出订单时使该 GUID(主要)的折扣无效。我假设这将在调用 ashx 处理程序时完成。该 GUID 将阻止某人传入随机数。他们将无法像整数密钥一样猜测 GUID,并且锁定机制可以防止多个订单的多次应用相同的折扣。


推荐阅读