asp.net 访问限制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net 访问限制相关的知识,希望对你有一定的参考价值。

在程序执行之前判断 访问路径和访问网页后缀
是.html的直接执行不处理
是.aspx进行处理
.aspx是内部转发过来的 执行
.aspx是外网直接访问的 转到首页
目的 限制外网直接访问 .aspx 页面 (高手们你们有什么方法可以 实现不 或者比我的更好 求指教)
上面说的这个方法我也不太会 会的教下我谢谢额
我做的不是登录
是所以展示页面
asp.net 过滤器做了一个 伪静态 然后把路径也动态改变了
这样实现了 可有出现一个问题
。aspx的后缀也能进去
我想要的效果是把 。aspx后缀的外网来的全部到首页
.aspx 这里面可以自己在地址栏写东西麻烦 还能看我我项目文件实际层次
所以不好 只能让外网同过.html后缀来访问

楼上的是答非所问,不用理他

是.html的直接执行不处理
IIS6下和IIS7(7.5)的经典模式是不处理html的,只有配置过后才会处理(默认是aspx,ashx,ascx等等),所以如果你的服务器是以上情况的话,除非添加html处理,否则无法操作。(当然你可以写C++的IIS Filter处理也可以)

是.aspx进行处理
.aspx是内部转发过来的 执行
.aspx是外网直接访问的 转到首页
这个可以一个判断请求头的refer,一般浏览器引用了上一个网页,不过这个用户代理可以修改。第二个使用cookie,登录首页写入一个cookie,在其他网页判断。Session在访问过其他页面之后就会存在,所以判断起来不保险。
参考技术A 完成登陆
把部分用户信息传到session
给每个页面的开头增加session中用户是否为空的判断
如果为空就转到首页追问

问非所答

追答

呵呵 你了解了会话机制再说吧

参考技术B 反正有人回话了 给你个思路在 用 ISAPI 写正则 这点事轻松搞定

一种基于自定义代码的asp.net网站访问IP过滤方法!

         对于一些企业内部核心系统,特别是外网访问的时候,为了信息安全,可能需要对外部访问的IP地址作限制,虽然IIS中也提供了根据IP地址或IP地址段进行限制或允许,但并没有提供根据IP地址所在的城市进行限制或允许。本文主要通过自定义扩展IHttpModule接口,考虑到性能IP数据库主要采用QQwry纯真IP数据库(但此数据库并非是官方的,我之前与ip138网站对比过,IP地址信息的准确性大概在90%左右),主要实现不仅可以根据IP地址或IP地址段进行限制或允许(与IIS的功能相同),而且可以根据IP地址的所在城市进行限制或允许。该WebsiteFilter组件核心代码如下:

技术分享
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Xml;
using System.IO;
using System.Net;
using NetOpen_System.Component.QQWry;

namespace NetOpen_System.Component
{
    public sealed class WebsiteFilterHttpModule : IHttpModule
    {
        #region IHttpModule 成员

        public void Dispose()
        {
        }

        public void Init(HttpApplication context)
        {
            context.BeginRequest += new EventHandler(context_BeginRequest);
        }


        #endregion


        void context_BeginRequest(object sender, EventArgs e)
        {
            try
            {
                //HttpApplication objApp = (HttpApplication)sender;

                if (HttpContext.Current.Request.IsLocal)//忽略本地计算机请求
                    return;

                string ip = HttpContext.Current.Request.UserHostAddress;
               

                QQWryLocator qqWry = new QQWryLocator(HttpContext.Current.Server.MapPath(@"~\\IpData\\qqwry.dat"));

                IPLocation ipaddress = qqWry.Query(ip);  //查询一个IP地址

                UrlMatchEngine pu = WebsiteFilterConfiguration.GetConfig().PickedUrls;


                if (string.IsNullOrEmpty(pu.CitySiteList) == false)
                {
                    if (pu.CitySiteList.Contains(ipaddress.Country) == false)
                    {

                        if (!WebsiteFilterConfiguration.GetConfig().IpChecks.GetIpIn(ip))
                        {   //若在IP列表中找不到访客ip

                            //string rawUrl = HttpContext.Current.Request.RawUrl;
                            //UrlMatchEngine pu = WebsiteFilterConfiguration.GetConfig().PickedUrls;

                            ////列表包含当前url且列表为黑名单、列表不包含当前url且列表不为黑名单  时需转向
                            ////换而言之,“配备结果”与“是否黑名单”取值一致时需转向
                            //if (pu.IsMatch(rawUrl) == pu.IsBlacklist)
                            //{   //非公开url自动重定向
                            //    HttpContext.Current.Response.Redirect(pu.ErrorPage);
                            //}
                            HttpContext.Current.Response.Redirect(pu.ErrorPage, true);
                            //HttpContext.Current.Server.Transfer(pu.ErrorPage);

                        }
                        else
                        {
                            return;
                        }
                    }
                    else
                    {
                        return;
                    }
                }
                else
                {
                    if (!WebsiteFilterConfiguration.GetConfig().IpChecks.GetIpIn(ip))
                    {   //若在IP列表中找不到访客ip

                        //string rawUrl = HttpContext.Current.Request.RawUrl;
                        //UrlMatchEngine pu = WebsiteFilterConfiguration.GetConfig().PickedUrls;

                        ////列表包含当前url且列表为黑名单、列表不包含当前url且列表不为黑名单  时需转向
                        ////换而言之,“配备结果”与“是否黑名单”取值一致时需转向
                        //if (pu.IsMatch(rawUrl) == pu.IsBlacklist)
                        //{   //非公开url自动重定向
                        //    HttpContext.Current.Response.Redirect(pu.ErrorPage);
                        //}
                        HttpContext.Current.Response.Redirect(pu.ErrorPage, true);
                        //HttpContext.Current.Server.Transfer(pu.ErrorPage);
                    }
                    else
                    {
                        return;
                    }
                }
            }
            catch
            {

            }
        }
    }
}
技术分享

 

            在部署方面,非常简单主要利用IHttpModule接口并在Web.config中的HttpModule节点添加此组件的配置,访问限制或允许参数可以在NetOpen_SystemWebsiteFilter.cfg.xml进行设置,以下为一个简单的配置示例;

技术分享
<?xml version="1.0" encoding="utf-8" ?>
<NetOpen_System>
  <WebsiteFilter>
    <PickedUrl IsBlacklist="0" ErrorPage="~/sorry.htm" CitySiteList="浙江省宁波市,浙江省杭州市">
      <add pattern="^~/default.aspx"/>
    </PickedUrl>
    <PickedIP>
      <add ip1="192.168.10.1" ip2="192.168.10.5" />
      <remove ip1="192.168.10.2" ip2="192.168.10.4" />
      <add ip1="192.168.10.3" />
    </PickedIP>
  </WebsiteFilter>
</NetOpen_System>
技术分享

            该组件源代码下载地址:https://websitefilter.codeplex.com/,欢迎访问下载!虽然该组件实现并不复杂,原理也很简单,但较为实用,后续将增加根据IP138的网站进行实时查询,这样IP地址信息将更为精确,但对性能可能会有一些影响。

 

本博客为软件人生原创,欢迎转载,转载请标明出处:http://www.cnblogs.com/nbpowerboy/p/3160134.html。演绎或用于商业目的,但是必须保留本文的署名软件人生(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。SharePoint商业智能技术QQ群:140668362,.Net技术交流QQ群:195516928,欢迎各位加入交流

以上是关于asp.net 访问限制的主要内容,如果未能解决你的问题,请参考以下文章

如何限制对文件系统(ASP.NET Web 应用程序目录)中文件的访问?

Asp.Net Core google-signin oauth 限制访问并获取 g-suite 角色

ASP.NET Core MVC,用户登录后限制查看

一种基于自定义代码的asp.net网站访问IP过滤方法!

用VB6.0或VB.NET或C#做一个客户端,用来“限制用户只能在办公室访问Web系统”

ASP.NET Core中如何限制响应发送速率(不是调用频率)