javascript - 保护 ASHX Web Handler 不被用户调用
问题描述
我正在使用一家调查广告公司来奖励用户通常会购买的东西。它是一个 JavaScript SDK,我可以订阅 Survey_Finished 事件。在那种情况下,我通过 AJAX 调用我的 ASHX 处理程序,它通过查询字符串传递用户名。处理程序然后获取用户名,并更新 SQL 授予用户他们的奖品。
用户真正需要做的就是查看页面源代码,获取 ASHX 处理程序的 url 并自己调用它,以便能够滥用系统并获得他们想要的尽可能多的奖品。
我怎样才能确保这一点,以确保我的 Web 应用程序是唯一能够调用 ASHX 处理程序的东西?
解决方案
在数据库的表中创建一个 GUID 作为折扣的关键。应用折扣后锁定折扣,并在签出订单时使该 GUID(主要)的折扣无效。我假设这将在调用 ashx 处理程序时完成。该 GUID 将阻止某人传入随机数。他们将无法像整数密钥一样猜测 GUID,并且锁定机制可以防止多个订单的多次应用相同的折扣。
推荐阅读
- python - 在 google colab 上保存文件
- azure-active-directory - 可以使用服务主体使用 ADFv2 连接但不能通过 SSMS 连接到 Azure SQL
- javascript - 提交表单呈现在不同的页面
- json - 如何更新 JSON 对象的属性
- c# - 如何将 ComboBox 的当前选择作为字符串获取
- javascript - 生成 >0 的随机整数,其给定浮点数的预期平均值 >0
- oauth - 使用自定义 Oauth 连接到 Snowflake 时对 invalid_client 错误进行故障排除
- branch.io - 分支未正确衡量来自 Google Ads 应用安装广告系列的安装事件
- r - 错误:在 Node.js 中执行 r-script 时产生 Rscript ENOENT
- git - 如何继续开发废弃的 GitHub 存储库(稍后合并它们的选项)?