最近我注意到很多用户都在我的网站上注册,他们都使用一次性电子邮件,临时电子邮件地址或虚假电子邮件在该网站上进行注册...
为部分防止这种情况,我添加了mailgun电子邮件验证功能,该功能可以告诉我电子邮件是否有效,是否为一次性邮件...
这过滤掉了95%的虚假电子邮件和用户,但是仍有一小部分被“忽略”。我发现要做的是通过代码执行以下操作:
public static bool IsValidEmail(string email)
{
RestClient client = new RestClient();
client.BaseUrl = new Uri("https://api.mailgun.net/v3");
client.Authenticator = new HttpBasicAuthenticator("api", "");
RestRequest request = new RestRequest();
request.Resource = "/address/validate";
request.AddParameter("address", email);
var res = new JavaScriptSerializer().Deserialize<RootObject>(client.Execute(request).Content);
if (res.is_disposable_address || res.is_valid==false)
return false;
return true;
}
这是我之前描述的通过mailgun进行的第一步...第二种防止垃圾邮件/虚假用户的方法是,我在数据库中手动设置了一个表,该表中有不允许加入黑名单的域。 。逻辑是:
public static bool IsValid(string email)
{
using (var ctx = new myEntities())
{
var blacklistedProviders = ctx.BlacklistedDomains.ToList();
foreach (var item in blacklistedProviders)
{
if (email.ToLower().Contains(item.DomainName.ToLower()))
return false;
}
}
return true;
}
但是,我认为这不会阻止他们在网站上进行更多恶意操作...
我还添加了Google Recaptcha来加强垃圾邮件发送者的注册过程,这也做得很好。...
所以我的问题是:
有人可以帮我吗?