网站安全攻击和防御中的屏蔽代理服务器

网站安全攻击和防御中的屏蔽代理服务器

 

网站安全一直是个重要话题,本人写了网络攻防的屏蔽代理服务器相关代码,分享下:

1. 写个网页request类:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    public class WebRequestUtil
    {
        public static string responseBody = string.Empty;
        public static bool GetWeb(string uri, string proxyAddress = "", int proxyPort = 0)
        {
            string serverUri = string.Format(uri);

            ////set limit for supporting 200 connection
            ServicePointManager.DefaultConnectionLimit = 1000;

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serverUri);

            if (!string.IsNullOrEmpty(proxyAddress))
            {
                WebProxy myproxy = new WebProxy(proxyAddress, proxyPort);
                request.Proxy = myproxy;
            }

            ////extend timeout for decrease request timeout re-trying times
            request.Timeout = 60 * 1000;
            request.Method = @"GET";

            UTF8Encoding encoding = new UTF8Encoding();
            request.Headers.Set("Cache-Control", @"no-cache");
            request.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)";
            try
            {
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                bool isSent = false;
                int retryCount = 0;
                string errorStr = string.Empty;
                while (!isSent && retryCount <= 2)
                {
                    retryCount++;
                    try
                    {
                        using (StreamReader stream = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
                        {
                            responseBody = stream.ReadToEnd();
                        }

                        isSent = true;
                    }
                    catch (Exception exc)
                    {
                        if (!errorStr.Contains(exc.ToString()))
                        {
                            errorStr += exc.ToString();
                        }

                        ////Re-try when operation timeout
                        if (!exc.ToString().Contains("The operation has timed out"))
                        {
                            LogError(exc.ToString());
                        }

                        Thread.Sleep(1000);
                    }
                }

                if (retryCount > 100)
                {
                    string err = string.Format("request.GetRequestStream try 100 times and timeout! detail error: {0}", errorStr);
                    LogError(err);
                    return false;
                }

                ////need to close or abort request for each call to fix timeout issue, otherwise it will fail when the 3rd call!
                if (request != null)
                {
                    request.Abort();
                }

                if (response.StatusCode != HttpStatusCode.OK)
                {
                    string err = string.Format("Failed, error:{1}", response.ToString());
                    LogError(err);
                    return false;
                }

                if (response != null)
                {
                    response.Close();
                }
            }
            catch (Exception exc)
            {
                LogError(exc.ToString());
                return false;
            }

            return true;
        }

        public static void LogError(string content)
        {
            File.AppendAllText("log.log", "ERROR: " + content + Environment.NewLine);
        }
    }
}

2. 采集代理服务器代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Microsoft.ServiceBus;
using Microsoft.ServiceBus.Messaging;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        static int FailCount = 0;
        static int TotalCount = 0;
        const string IPRegex = @"(\d{1,3}\.){3}\d{1,3}</td><td>\d{1,4}";
        static void Main()
        {
            DateTime startTime = DateTime.Now;
            //int i = 0;
            //while (DateTime.Now < startTime.AddMinutes(5))
            {
                //WriteLog("Try " + i++ + "th round! Begin" + DateTime.Now.ToString());

                //WebRequestUtil.GetWeb(@"http://edu.laliyun.com/test.php", "147.47.106.36", 1920);
                //File.AppendAllText(@"test.txt", WebRequestUtil.responseBody, Encoding.UTF8);

                string url = @"http://proxy.com.ru/gaoni/list_{0}.html";
                for (int i = 1; i <= 63; i++)
                {
                    WebRequestUtil.GetWeb(string.Format(url, i));

                    string sourceString = WebRequestUtil.responseBody;
                    string IPs = string.Empty;
                    var matches = Regex.Matches(sourceString, IPRegex);
                    if (matches.Count > 0)
                    {
                        foreach (var m in matches)
                        {
                            string ip = m.ToString().Replace("</td><td>", "#").Split('#')[0];
                            IPs += ip + Environment.NewLine;
                        }
                    }

                    File.AppendAllText(@"blacklist.txt", IPs, Encoding.UTF8);
                    Console.WriteLine("Done " + i.ToString() + " page.");
                }

                //Test2(1);
                //WriteLog("Total:" + TotalCount);
                //WriteLog("Fail:" + FailCount);
                //WriteLog("Try " + i++ + "th round! End" + DateTime.Now.ToString());
            }
            Console.WriteLine("Please press any key to end of this program!\r\n");
            Console.ReadKey();
        }

        static void WriteTotalLog(string message)
        {
            //WriteLog(message, @"C:\TotalLog.txt");
        }

        static void WriteLog(string message, string path = @"C:\Test\Test#log.txt")
        {
            message = "ThreadId:" + Thread.CurrentThread.ManagedThreadId + "," + message + Environment.NewLine;
            File.AppendAllText(path.Replace("#", Thread.CurrentThread.ManagedThreadId.ToString()), message);
        }

        static void WriteErrorLog(string message)
        {
            WriteLog(message, @"C:\TestError" + Thread.CurrentThread.ManagedThreadId + "log.txt");
        }

3. 多线程攻击服务器代码:

static void Test2(int numThreads)
        {
            ManualResetEvent resetEvent = new ManualResetEvent(false);
            int toProcess = numThreads;

            // Start workers.
            for (int i = 0; i < numThreads; i++)
            {
                new Thread(delegate()
                {
                    test();
                    //Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
                    // If we're the last thread, signal
                    if (Interlocked.Decrement(ref toProcess) == 0)
                        resetEvent.Set();
                }).Start();
            }

            // Wait for workers.
            resetEvent.WaitOne();
            WriteTotalLog("Done all!");
        }

        static void test()
        {
            TotalCount++;

            try
            {
                WebRequestUtil.GetWeb(@"http://1111.ip138.com/ic.asp", "219.239.236.49", 8888);
                File.AppendAllText(@"response.html", WebRequestUtil.responseBody, Encoding.UTF8);
                Console.WriteLine(Thread.CurrentThread.ManagedThreadId + "pass");
            }
            catch (Exception exc2)
            {
                FailCount++;
                WriteErrorLog("Error:" + exc2.ToString());
            }
        }
    }
}

4. Php网页屏蔽代理服务器代码:

<?php

$page= file_get_contents("blacklist.txt");

	if(!empty($_SERVER['HTTP_CLIENT_IP']))
	{
        	//check ip from share internet
        	$ip = $_SERVER['HTTP_CLIENT_IP'];
    	}
	else if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
	{
        	//to check ip is pass from proxy
        	$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    	}
	else{
        	$ip = $_SERVER['REMOTE_ADDR'];
    	}

	echo  $ip;
if(strpos($page,$ip)!== false)
echo "您使用代理浏览我们的网站,很抱歉本站出于安全考虑屏蔽了代理,请使用非代理浏览,谢谢!";
else
echo "执行程序的正常逻辑";
?>

演示代码:http://edu.laliyun.com/test.php

时间: 2024-09-23 22:27:13

网站安全攻击和防御中的屏蔽代理服务器的相关文章

Ubuntu系统中如何屏蔽迅雷

因为迅雷/快车/qq旋风等下载工具使用p2sp方式,默默的从服务器吸血而走,却不能带来任何ip/pv,实乃万恶而不可赦也.迅雷在吸血的时候,不仅仅是下载了服务器上的数据,而且带来了更多的客户端请求,服务器极有可能因为如此大量的请求而瘫痪.即使没有瘫痪,那种恐怖的流量消耗,也让人非常心痛且愤怒. 如果迅雷在消耗服务器资源,占用服务器带宽的同时,能给站长带来相应的效益/利益,也许很多人就不会考虑去屏蔽迅雷了,但是他们没有--默默的吸血,默默的离开,正如蚊子一般,请问阁下看到蚊子下意识动作是什么?我也

反CNN网站遭到攻击的内幕

中介交易 SEO诊断 淘宝客 云主机 技术大厅 "疯狂的攻击说明西方媒体已经胆寒,不敢公开与我们辩驳,只好采用这种下三滥招数"--摘自网友评论 国际先驱导报记者晓德发自北京 上线仅半个多月,anti-cnn.com(反CNN网站)就遭遇了成长的烦恼. 因为率先打出"反对西方媒体歪曲报道"的大旗,这家由中国网民自发组建的网站,从一出生就万众瞩目.它在最短的时间内赢得了成千上万名海内外网友的热情支持.但是树大招风,海内外媒体的广泛报道,不仅使该网站日浏览量超过50万,也

XSS攻击及防御

XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性.其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的.如,盗取用户Cookie.破坏页面结构.重定向到其它网站等. XSS攻击 XSS攻击类似于SQL注入攻击,攻击之前,我们先找到一个存在XSS漏洞的网站,XSS漏洞分为两种,一种是DOM Based X

服务器安全之Ddos攻击攻击与防御讲述

[ 目录 ] 一 背景 二 应急响应 三 常见ddos攻击及防御 四 根源及反击 五 总结 一 背景 在前几天,我们运营的某网站遭受了一次ddos攻击,我们的网站是一个公益性质的网站,为各个厂商和白帽子之间搭建一个平台以传递安全问题等信息,我们并不清楚因为什么原因会遭遇这种无耻的攻击.因为我们本身并不从事这种类型的攻击,这种攻击技术一般也是比较粗糙的,所以讨论得比较少,但是既然发生了这样的攻击我们觉得分享攻击发生后我们在这个过程中学到得东西,以及针对这种攻击我们的想法才能让这次攻击产生真正的价值

安全简报: 正则表达式拒绝服务攻击和防御

在 2009 年 11 月刊中,我写了一篇标题为"XML 拒绝服务攻击和防御" (msdn.microsoft.com/magazine/ee335713) 的文章,在这篇文章中,我介绍了一些对 XML 分 析程序特别有效的拒绝服务 (DoS) 攻击技巧.我从读者那里收到许多有关此文章的电子邮件, 他们都想了解有关这方面的更多知识,这让我真正意识到人们已经了解 DoS 攻击的严重性. 我相信,在未来的四到五年中,随着权限升级,执行攻击会变得更加困难,这是由于不断采 用诸如数据执行保护

网站受攻击 十万元巨资补偿用户

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 顾客是上帝,一直是现代商家在营销中奉行的最高准则.虽然本人不是商家,也不懂得营销,但这个概念却是深入消费者每个人的心中.众然是网络也是如此,如今吃.穿.住.行--我们的生活已基本被复制到网络上,网络生活影响并普及我们身边的每一个人. 近日,笔者在南昌最大的生活网站地宝网(www.tiboo.cn)看到这样一则活动"倾情回馈 地宝网十

《网络空间欺骗:构筑欺骗防御的科学基石》一1.1 主动网络空间防御中网络空间抵赖与欺骗的视图

1.1 主动网络空间防御中网络空间抵赖与欺骗的视图 本文讲的是网络空间欺骗:构筑欺骗防御的科学基石一1.1 主动网络空间防御中网络空间抵赖与欺骗的视图,将抵赖与欺骗纳入标准操作规程(SOP):随着攻击技术的不断演进,网络空间防御系统也必将随之演化,以提供更加主动和持续的防御.我们预想将网络空间抵赖与欺骗同网络空间威胁情报.网络空间运营安全(OPSEC)一同作为网络空间防御与安全操作的标准操作规程中的重要部分.网络空间工程系统通过应用抵赖与欺骗应对APT攻击,并更加有效地感知攻击者的策略,使得攻击

《网络空间欺骗:构筑欺骗防御的科学基石》一2.3.1 在计算机防御中使用欺骗的优势

2.3.1 在计算机防御中使用欺骗的优势 本文讲的是网络空间欺骗:构筑欺骗防御的科学基石一2.3.1 在计算机防御中使用欺骗的优势,英国科学军事情报学者Reginald Jones简要阐述了安全与欺骗的关系.他把安全看作是一个"被动的活动,是你试图阻止信息流向对手",它需要一个与之相对应的概念,即欺骗,使其在冲突中有竞争优势[28].他也认为欺骗通过向恶意敌手提供虚假的线索,是"对安全的积极响应". 通过智能地使用欺骗性的技术,系统的防御者可以误导和/或迷惑攻击者,

安全攻防:缩小攻击与防御差距的4个步骤

本文讲的是 : 安全攻防:缩小攻击与防御差距的4个步骤   ,  [IT168 编译]从近期出现的数据泄密新闻中,我们看到由于企业未能抵御安全攻击,使得黑客攻击成功,并窃取了这些企业的重要数据.Target公司失去了客户的信用卡和借记卡数据,Adobe公司损失了其客户的信用卡信息以及ID和密码,易趣公司也泄漏了其客户的个人信息包括电子邮件地址和物理地址. 这些数据泄漏事故已经在个人消费者心中造成了不安,并且让泄密的公司因为名誉和品牌的损害造成数百万美元的损失,更不用说缓解和恢复的成本.而我们所知