如何防止别人恶意刷新短信验证码,大家有没有好的方法

昨天网站,调用短信接口的验证码被别人恶意刷了,幸亏短信商及时提醒了我们,说真的,用了好几年了一直很稳定,没有出现这种情况,大家有没有更好的方法解决一下呢。我们咨询过短信商这一块,它们说防止恶意获取可以加一下图片验证码,限制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;
    } 

我就是用限制提交次数来做的~

肯定要限制一个账号在一段时间内的发送量啊。。这种没什么好办法。。你不限制别人不是一直发了

每分钟最多发一条短信,那个按钮一分钟后才能按

另外验证码稍微复杂一些,太简单了,可以机器识别。

加一下图片验证码,限制同一时间某IP最大发送量
这两个办法最好了。

加了图片验证码,好象还不行啊。。,

目前已经加过倒 计时的功能了。