苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 12242|回复: 6

[教程] 【分布式系统框架教程】-黑名单白名单的使用方式

[复制链接]
发表于 2015-1-19 17:52:25 | 显示全部楼层 |阅读模式
本帖最后由 songwenqi 于 2015-1-21 15:48 编辑

【分布式系统框架教程】-黑名单白名单的使用方式

导读部分



1.【分布式系统框架】教程目录帖http://www.sufeinet.com/thread-10624-1-1.html

教程部分


     分布式马上就要升级了,请大家多多捧场。本次升级的项目中设计到过滤非法字符的功能。         平时,我们在做验证非法字符的时候,传统的做法是在每个页面需要传递参数或者有文本框输入的情况下进行验证,这种方式呢很不容易扩展,不方便维护和管理,我们知道,在vs项目下有个全局global.asax文件,也叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法。我们可以使用这个文件实现应用程序安全性以及其它一些任务。这个文件中有个Application_BeginRequest方法,我们先来看看这个方法。

    Application_BeginRequest:在接收到一个应用程序请求时触发。对于一个请求来说,它是第一个被触发的事件,请求一般是用户输入的一个页面请求(URL)。也就是说任何请求都会先执行这个方法,所以我们可以将我们验证字符的一些处理放在这个方法中。

    首先我们需要在global.asax中定义两个静态的集合来作为黑名单和白名单。
[C#] 纯文本查看 复制代码
public class Global : System.Web.HttpApplication
    {
        bool ischeck = true;
        #region 白名单
        public static List<string> Whitelist = new List<string>();
        #endregion

        #region 黑名单
        public static List<string> BlackList = new List<string>();
        #endregion
}


    Application_Start:在HttpApplication 类的第一个实例被创建时,该事件被触发。它允许你创建可以由所有HttpApplication 实例访问的对象。我们在这个方法中添加对应的黑名单和白名单。
[C#] 纯文本查看 复制代码
 void Application_Start(object sender, EventArgs e)
        {
            // 在应用程序启动时运行的代码

            //添加白名单 白名单不做处理  这里可以添加多个白名单
            Whitelist.Add("www.sufeinet.com".ToLower());
            //添加黑名单  黑名单直接拉黑 这里可以添加多个黑名单
            BlackList.Add("xiaomi.com");
        }

    然后在Application_BeginRequest方法中写我们的逻辑,对黑名单的字符进行过滤,对白名单不做处理等操作

[C#] 纯文本查看 复制代码
 void Application_BeginRequest(object sender, EventArgs e)
        {
            //处理非法字符串
            try
            {
                //首先判断该url是否在白名单中
                string url = (Request.Url.DnsSafeHost + Request.Url.AbsolutePath).ToLower();
                foreach (string item in Whitelist)
                {
                    if (url.Contains(item))
                    {
                        //白名单中的字符串不做检查
                        ischeck = false;
                        break;
                    }
                }
                if (ischeck)
                {
                    if (Request.QueryString != null && (!string.IsNullOrWhiteSpace(Request.QueryString.ToString())))
                    {
                        //检测字符串
                        CheckHtml(Request.QueryString.ToString());
                    }
                    if (Request.Form != null && (!string.IsNullOrWhiteSpace(Request.Form.ToString())))
                    {
                        //检测字符串
                        CheckHtml(Request.Form.ToString());
                    }
                }
            }
            catch { }
        }

        #region 非法字符处理方法
        /// <summary>
        /// 检查是否存在Html标签
        /// </summary>
        /// <param name="str">html字符串</param>
        private void CheckHtml(string str)
        {
            //首先判断黑名单 如在黑名单中直接跳到错误页
            foreach (var black in BlackList)
            {
                if (str.Contains(black))
                {
                    Redirect_Error();
                    break;
                }
            }
            //如不在黑名单中则判断是否包含非法字符串
            if (FilterHelper.CheckHtml(str))
            {
                Redirect_Error();
            }
        }
        private void Redirect_Error()
        {
            Response.Redirect("/Error/BanError.html");
        } 
        #endregion

   这样每次请求都会先执行Application_BeginRequest方法,这样就达到了我们想要的结果,而且这种方式便于维护,当我们不想过滤某个字符时,就可以将其加入到白名单,加入黑名单的直接处理。



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-1-19 19:40:09 | 显示全部楼层
留个脚印表示我来过!
发表于 2015-1-19 20:46:31 | 显示全部楼层
这个有点专业的味道了,继续努力
 楼主| 发表于 2015-1-20 08:24:13 | 显示全部楼层
站长苏飞 发表于 2015-1-19 20:46
这个有点专业的味道了,继续努力

恩恩   会的  
发表于 2015-1-25 13:11:49 | 显示全部楼层
强烈支持楼主ing……
发表于 2015-3-18 09:38:07 | 显示全部楼层
我来学习过!
发表于 2015-3-27 09:57:58 | 显示全部楼层
膜拜中....!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-25 15:59

© 2014-2021

快速回复 返回顶部 返回列表