防cc攻击策略

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

这就是所谓的cc攻击,这就需要我们在程序里添加一些防CC攻击的策略代码,下面就来介绍一下自己最近写的一段代码,拿来供大家分享:

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中值就可以了,不用修改程序代码了。

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

原文链接:https://blog.csdn.net/weixin_33985679/article/details/86364552?ops_request_misc=&request_id=8976f0febf4a408baab16b68cd8a1251&biz_id=&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~koosearch~default-16-86364552-null-null.268%5Ev1%5Econtrol&utm_term=cc%E9%98%B2%E6%8A%A4

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/23441

(0)
上一篇 2023年12月27日 08:34
下一篇 2023年12月27日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml