我正在尝试开发一个网站,该网站有一个弹出模式,允许用户订阅我们的最新促销.在该输入中,我们有一个文本框,允许用户键入他们的电子邮件.
但是,当我们查看HTML代码时,HTTP POST URL可见:
如果有人试图使用此URL和垃圾邮件HTTP 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();
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能防止这种情况发生?我们不能加盖,因为这是我们促销的订户.
编辑:请注意,ANTI伪造令牌不起作用,因为黑客可以使用GET下载整个HTML字符串,并从防伪令牌文本框中获取值并再次将值POST到POST URL,因此它将无法正常工作并且相同的防伪令牌可以多次使用,这是不安全的.
我正在使用 asp.net core 2.0 来开发我的 MVC 应用程序。但是,我在视图中使用了 SharedLocalizer。我使用以下代码注入它:
@using Microsoft.AspNetCore.Mvc.Localization
@using Microsoft.Extensions.Localization
@inject IViewLocalizer Localizer
@inject IStringLocalizer<SharedResources> SharedLocalizer
@inject IHtmlLocalizer<SharedResources> SharedHtmlLocalizer
Run Code Online (Sandbox Code Playgroud)
这就是我调用 SharedLocalizer 的方式:
function updateCommission(agentID) {
var msg = '@SharedLocalizer["Confirm Update Commission?"].Value.ToString()';
if (confirm(msg) == false)
return false;
}
Run Code Online (Sandbox Code Playgroud)
如果我在我的 html 标签/输入中使用 SharedLocalizer,它显示正常。当我查看我的页面源代码时,字符串也是 '$#1231';
如何使用我的设置显示正确的字符串?