防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 ...
随机推荐
- pyothon学习笔记2-元组
# 1.元组对象不可修改,元组中列表对象的对象可以修改 t = (1,2,[1,2,3]) t[2] = [1,2,3,4] # 'tuple' object does not support ite ...
- weblogic的基础安装
安装java环境 不能使用centos自带的openjdk 必须使用源码安装 把下载的jdk-8u181-linux-x64.tar 解压到 /usr/src目录下 tar zxvf jd ...
- windows共享文件夹至centos系统文件夹下
1. window 共享文件夹 https://jingyan.baidu.com/article/358570f6633ba4ce4624fc48.html 2. 在访问Windows共享资料之前, ...
- python continue的应用
count = 1sum = 0while count < 100: if count == 88: count += 1 continue if count % 2 == 0: sum = s ...
- 从零开始一起学习SLAM | 点云到网格的进化
点击公众号"计算机视觉life"关注,置顶星标更快接收消息! 本文编程练习框架及数据获取方法见文末获取方式 菜单栏点击"知识星球"查看「从零开始学习SLAM」一 ...
- Leetcode: Sliding Window Median
Median is the middle value in an ordered integer list. If the size of the list is even, there is no ...
- SQL Server创建存储过程——动态SQL
简介: 存储过程(stored procedure)是一组为了完成特定功能的SQL语句集合,经编译后存储在服务器端的数据库中,利用存储过程可以加速SQL语句的执行. 自定义存储过程,由用户创建并能完成 ...
- Oracle 中 编写 function 和 procedure 的注意事项
create or replace function sum_pro( v_a number, v_b number ) return number is -- v_result number(10) ...
- Spring Boot:快速入门(二)
学习完成怎么搭建一个独立Spring Boot项目后,上面是整理出来的一些相关文件以及用途. 原本是一个Excel文件,拷贝到博客园就成了图片,当做几个笔记了,用到的时候可以查阅,也欢迎转载,收藏. ...
- 蓝桥杯c/c++省赛真题——日志统计
标题:日志统计 [问题描述]小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有N行.其中每一行的格式是:ts id 表示在ts时刻编号id的帖子收到一个" ...