gpt4 book ai didi

c# - 如何防止人们继续将 HTTP POST 循环到一个函数?

转载 作者:太空狗 更新时间:2023-10-29 22:29:43 24 4
gpt4 key购买 nike

我正在尝试开发一个网站,该网站有一个弹出模式,允许用户订阅我们最新的促销事件。在该输入中,我们有一个文本框,允许用户输入他们的电子邮件。

但是,当我们查看 HTML 代码时,HTTP POST URL 是可见的:

enter image description here

如果有人试图使用此 URL 并发送垃圾 HT​​TP POST 请求(见下文),则可以在 subscriber 数据库表中创建无限制的条目。

for (int a = 0; a < 999999; a++)
{
var values = new Dictionary<string, string>
{
{ "email", a+"@gmail.com" }
};

var content = new FormUrlEncodedContent(values);
var response = await client.PostAsync("http://www.example.com/recepticle.aspx", content);
var responseString = await response.Content.ReadAsStringAsync();
}

如何防止这种情况发生?我们不能输入验证码,因为这是我们促销事件的订阅者。

编辑:请注意,防伪 token 将不起作用,因为黑客可以使用 GET 下载整个 HTML 字符串,并从防伪 token 文本框中获取值并将值发布到POST URL,所以它不会工作,同一个防伪 token 可以多次使用,这是不安全的。

最佳答案

您可以选择以下选项之一来实现您正在寻找的内容。

1- 实现CAPTCHA/re-CAPTCHA,它将确保无法使用任何工具请求。我知道您不想使用 CAPTCHA,但我仍然认为您应该使用它,因为这是处理此类情况的最佳方法。

2- IP Based restriction,锁定从一个IP提交请求一段时间。

3- 其他选项可以是OTP(一次性密码),您可以将OTP发送到邮箱,只有在成功验证后才能注册邮箱。

关于c# - 如何防止人们继续将 HTTP POST 循环到一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50084979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com