昨天网站,调用短信接口的验证码被别人恶意刷了,幸亏短信商及时提醒了我们,说真的,用了好几年了一直很稳定,没有出现这种情况,大家有没有更好的方法解决一下呢。我们咨询过短信商这一块,它们说防止恶意获取可以加一下图片验证码,限制IP,限制手机号提交次数等,但大家还有没有更好一些的方法呢。短信发送验证码如下
public string SendNoteCode()
{
//官方网站:http://www.56dxw.com
string cid = "******";
string username = "******";
string userpwd = "******";
string _sms = "******";
string msg = "欢迎光临本网站,您的验证码是:" + Number(6, false) + "【化妆网】";
msg = HttpUtility.UrlEncode(msg, System.Text.Encoding.GetEncoding("gbk"));
string tel = txt_tel.Text.ToString().Trim();
string url = "http://www.56dxw.com/sms/HttpInterface.aspx?comid=" + cid + "&username=" + username + "&userpwd=" + userpwd + "&handtel=" + tel + "&sendcontent=" + msg + "&sendtime=&smsnumber=" + _sms + "";
string r = GetSend(url, "gbk");
return r;
}
#endregion
#region 生成随机数
/// <summary>
/// 生成随机数字
/// </summary>
/// <param name="length">生成长度</param>
/// <returns></returns>
public static string Number(int Length)
{
return Number(Length, false);
}
/// <summary>
/// 生成随机数字
/// </summary>
/// <param name="Length">生成长度</param>
/// <param name="Sleep">是否要在生成前将当前线程阻止以避免重复</param>
/// <returns></returns>
public static string Number(int Length, bool Sleep)
{
if (Sleep)
System.Threading.Thread.Sleep(3);
string result = "";
System.Random random = new Random();
for (int i = 0; i < Length; i++)
{
result += random.Next(10).ToString();
}
return result;
}