防cc攻击策略

黑客攻击你的网站,会采起各类各样的手段,其中为了下降你网站的访问速度,甚至让你的服务器瘫痪,它会不断的刷新你的网站,或者模拟不少用户同一时间大量的访问你的网站,html

这就是所谓的CC攻击,这就须要咱们在程序里添加一些防CC攻击的策略代码,下面就来介绍一下本身最近写的一段代码,拿来供你们分享:web

using System;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.IO;

public partial class _Default : System.Web.UI.Page
{

    string getIp = null;

    protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)

        {

            GetCC();

        }

    }

    //放CC攻击
    public void GetCC()
    {

        string FYCC_05 = "";

        //'CCLog.txt存放的路径文件夹!须要手动建立!建议留空

        //'若是输入,请在前面加上符号"/"

        int FYCC_18 = 1;

        //'防刷新频繁CC攻击关闭与启动,1为启动0为关闭

        int FYCC_17 = 1;

        //'防刷新禁止IP功能关闭与启动,1为启动0为关闭

        int FYCC_19 = 6;

        //'每分钟刷新次数,将会出现提示

        string FYCC_20 = "http://www.163.com";

        //'被封IP后自动转入的页面,建议输入存放病毒的网址!!!

        int FYCC_21 = 12;

        //'恶意刷新几回将禁止IP

        string realip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];//得到代理ip

        string proxy = Request.ServerVariables["REMOTE_ADDR"];//得到普通ip

        // getIp = GetIP();



        if (realip == null)
        {

            getIp = proxy;

        }
        else
        {

            getIp = realip;

        }

        string path = Server.MapPath("~/");

        if (!System.IO.File.Exists(path + "/CCLOG/CCLOG.txt"))

        {

            System.IO.File.CreateText(path + "/CCLOG/CCLOG.txt");

        }

        StreamReader reader = new StreamReader(path + "/CCLOG/CCLOG.txt");

        string readFile = reader.ReadToEnd();

        reader.Close();

        if (readFile.Contains(getIp))
        {

            Response.Write("您的IP" + getIp + "已经被禁止!如须要解封,请联系本站管理员')");

            Response.End();

        }

        if (Convert.ToInt32(Session["FYCC_01"]) > FYCC_19 && DateTime.Now.Minute != Convert.ToInt32(Session["FYCC_02"]))
        {

            Session["FYCC_01"] = "1";

            Session["FYCC_02"] = DateTime.Now.Minute.ToString();

        }

        else if ((Convert.ToInt32(Session["FYCC_01"]) > FYCC_21 - 1) && (DateTime.Now.Minute == Convert.ToInt32(Session["FYCC_02"])))
        {

            if (FYCC_17 != 0 & Convert.ToInt32(Session["FYCC_01"]) > FYCC_21 - 1)
            {

                OperationFile();

            }

            Response.Redirect("http://www.baidu.com");

        }

        else if ((Convert.ToInt32(Session["FYCC_01"]) > FYCC_19) && (DateTime.Now.Minute == Convert.ToInt32(Session["FYCC_02"])))
        {

            Response.Write("本站启动防刷新功能,1分钟内只能翻" + FYCC_19 + "页,请在下一分钟再刷新本页面");

            Session["FYCC_01"] = (Convert.ToInt32(Session["FYCC_01"]) + 1).ToString();



            Response.End();

        }

        else
        {

            if (Session["FYCC_01"] == "")
            {

                Session["FYCC_01"] = "1";

                Session["FYCC_02"] = DateTime.Now.Minute.ToString();

            }

            else

            {

                if (DateTime.Now.Minute != Convert.ToInt32(Session["FYCC_02"]))
                {

                    Session["FYCC_01"] = "1";

                    Session["FYCC_02"] = DateTime.Now.Minute.ToString();

                }
                else
                {

                    Session["FYCC_01"] = (Convert.ToInt32(Session["FYCC_01"]) + 1).ToString();

                }

            }

        }

    }

    //向文件中添加Ip

    private void OperationFile()
    {

        string path = Server.MapPath("~/");

        if (!System.IO.File.Exists(path + "/CCLOG/CCLOG.txt"))

        {

            System.IO.File.CreateText(path + "/CCLOG/CCLOG.txt");

        }

        StreamWriter w = File.AppendText(path + "/CCLOG/CCLOG.txt");

        w.WriteLine(getIp);

        w.Close();

    }

}

原理很清晰,简单的说一下:服务器

当刷新的时候就记录他的刷新数,一分钟以内达到你设定的值,好比30次就给给予提示,不能频繁刷新,过下一分钟在刷新就行了,而后刷新数从头开始计算,假如恶意刷新不少次,就记录她的IP,而后将其封掉,只能联系管理员才能解除,这些的话就能够限制恶意的cc攻击了网站

上面的代码咱们能够把一下开关,设定的值写在web.config中,这样的话直接修改web.config中值就能够了,不用修改程序代码了。spa

 

 

from:https://www.cnblogs.com/shuang121/archive/2011/03/02/1969369.html代理

相关文章
相关标签/搜索