防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 = ; //'防刷新频繁CC攻击关闭与启动,1为启动0为关闭 int FYCC_17 = ; //'防刷新禁止IP功能关闭与启动,1为启动0为关闭 int FYCC_19 = ; //'每分钟刷新次数,将会出现提示 string FYCC_20 = "http://www.163.com"; //'被封IP后自动转入的页面,建议输入存放病毒的网址!!! int FYCC_21 = ; //'恶意刷新几次将禁止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"] = ""; Session["FYCC_02"] = DateTime.Now.Minute.ToString(); } else if ((Convert.ToInt32(Session["FYCC_01"]) > FYCC_21 - ) && (DateTime.Now.Minute == Convert.ToInt32(Session["FYCC_02"])))
{ if (FYCC_17 != & Convert.ToInt32(Session["FYCC_01"]) > FYCC_21 - )
{ 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"]) + ).ToString(); Response.End(); } else
{ if (Session["FYCC_01"] == "")
{ Session["FYCC_01"] = ""; Session["FYCC_02"] = DateTime.Now.Minute.ToString(); } else { if (DateTime.Now.Minute != Convert.ToInt32(Session["FYCC_02"]))
{ Session["FYCC_01"] = ""; Session["FYCC_02"] = DateTime.Now.Minute.ToString(); }
else
{ Session["FYCC_01"] = (Convert.ToInt32(Session["FYCC_01"]) + ).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
防cc攻击策略的更多相关文章
- 使用Discuz!自带参数防御CC攻击以及原理,修改Discuz X 开启防CC攻击后,不影响搜索引擎收录的方法
这部份的工作,以前花的时间太少. 希望能产生一定的作用. http://www.nigesb.com/discuz-cc-attacker-defence.html http://bbs.zb7.co ...
- linux中防CC攻击两种实现方法(转)
CC攻击就是说攻击者利用服务器或代理服务器指向被攻击的主机,然后模仿DDOS,和伪装方法网站,这种CC主要是用来攻击页面的,导致系统性能用完而主机挂掉了,下面我们来看linux中防CC攻击方法. 什么 ...
- OpenResty(nginx扩展)实现防cc攻击
OpenResty(nginx扩展)实现防cc攻击 导读 OpenResty 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强 ...
- nginx利用limit模块设置IP并发防CC攻击
nginx利用limit模块设置IP并发防CC攻击 分类: 系统2013-01-21 09:02 759人阅读 评论(0) 收藏 举报 来源:http://blog.xencdn.net/nginx- ...
- PHP防CC攻击代码
PHP防CC攻击代码: empty($_SERVER['HTTP_VIA']) or exit('Access Denied'); //代理IP直接退出 session_start(); $secon ...
- Linux系统防CC攻击自动拉黑IP增强版Shell脚本 《Linux系统防CC攻击自动拉黑IP增强版Shell脚本》来自张戈博客
前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存黑名单突然无法过滤后台,导致WordPress无法登录!虽然,可以通过修改本地hosts文件来解决这个 ...
- 防cc攻击利器之Httpgrard
一.httpgrard介绍 HttpGuard是基于openresty,以lua脚本语言开发的防cc攻击软件.而openresty是集成了高性能web服务器Nginx,以及一系列的Nginx模块,这其 ...
- Nginx 防CC攻击拒绝代理访问
先大概说说简单的结构…前端一个Nginx反向代理,后端一个Nginx instance app for PHP…实际上就是个Discuz,之前面对CC攻击都是预警脚本或者走CDN,但是这次攻击者不再打 ...
- 修改Discuz!X系列开启防CC攻击,不影响搜索引擎收录
最近网站一直被攻击,特别是新上线的交流社区,所以今天写了一个开启CC攻击防护代码,而且不影响搜索引擎收录. 在config_global.php文件中有如下代码: $_config['security ...
随机推荐
- linux echo 命令 打印字符串
打印字符串 [root@MongoDB ~]# echo "heloworld" heloworld
- webservice学习教程(一):理论
一. WebService到底是什么? webservice是一种跨平台,跨语言的规范,用于不同平台,不同语言开发的应用之间的交互 WebService是一个SOA(面向服务的编程)的架构,它是不依赖 ...
- 异常处理之IIS配置加载出错
问题详情: 一台部署在海外服务器,在管理IIS过程中,出现问题 There was an error when trying to connect. Do you want > to rety ...
- service order
1: SRVO Service Order compress: 本地部署,客户能够看到后台代码,transaction type,改代码等. SVO1 Service Order ...
- iOS Version和Build的区别
iOS开发中,会面对一个问题,Version和Build的区别.这两种均是版本号,但是在开发中还是有一定的区别,而且用处很大. Version 是版本号,在info.plist中对应的key是 CFB ...
- mybatis增强
MyBatis SQL参数传递(掌握) SQL映射器Mapper接口(掌握)Myb atis批量操作(理解掌握) (多对一)关联映射(掌握) (一对多,多对多)集合映射 MyBatis原理回顾(Obj ...
- Vue.js新城之勇者探秘录
那么我们就继续来聊聊学习Vue的一些方法?以下的学习思路可以供大家作为参考: 1.视频教程带你入门:初学者如果没有MVVM模式的基础学习Vue,可能初期切换思路有比较大的难度,这个时候可以借助视频教程 ...
- git反悔
Checkout checkout命令用于从历史提交(或者暂存区域)中拷贝文件到工作目录,也可用于切换分支.  ![ ...
- idea 2018.1 for mac破解激活方法---到2099
https://blog.csdn.net/weixin_41470864/article/details/81607169
- 记录tiny6410 使用linux-2.6.28.6内核遇到starting kernel...的问题
1\问题的解决主要是参考了tiny210相同的问题 2\/home/suxuandong/Documents/computer/linux_kernel/tiny6410/linux-2.6.28.6 ...