不同中间件是如何限制页面访问的


前言

在我们访问页面时候经常有403页面,这个在后端是如何实现的呢?

每个语言实现对页面限制访问的文件是不一样的,例如,web.xml,.htaccess,web.config,我们简单使用几个案例来说明一下

一、web.xml

1.什么是web.xml?

web.xml 文件只适用于 Java Web 应用程序。它是 Java EE(Enterprise Edition)规范的一部分,用于描述 Web 应用程序的配置和部署信息。

2.web.xml限制页面访问示例

可以通过 web.xml 文件中的安全约束(security constraint)来限制哪些页面可以访问,哪些页面不可以访问。安全约束是一种用于保护 Web 应用程序资源的机制,可以控制用户对特定资源的访问权限。

在 web.xml 文件中,可以使用<security-constraint>标签来定义安全约束,通过<web-resource-collection>标签来指定需要保护的资源,例如 Servlet、JSP 或静态文件等,然后使用<auth-constraint>标签来指定哪些角色可以访问受保护的资源。

例如,如下代码片段定义了一个安全约束,限制了 /admin/* 目录下的所有资源只能由具有 admin 角色的用户访问:

<security-constraint>
  <web-resource-collection>
    <web-resource-name>Admin Pages</web-resource-name>
    <url-pattern>/admin/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <role-name>admin</role-name>
  </auth-constraint>
</security-constraint>

二、.htaccess

1.什么是.htaccess?

.htaccess 文件是一个特殊的 Apache 配置文件,用于在 Web 服务器级别上配置网站的行为和属性。通过在 .htaccess 文件中添加一些指令,可以实现限制页面访问的功能

2. .htaccess限制页面访问示例

下面是一个基本的 .htaccess 文件,用于限制 /admin 目录下的所有页面只能由具有 admin 角色的用户访问:

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/.htpasswd
Require valid-user

<FilesMatch "\.(php|html)$">
  AuthType Basic
  AuthName "Restricted Area"
  AuthUserFile /path/to/.htpasswd
  Require valid-user
</FilesMatch>

<Files "login.php">
  Order Allow,Deny
  Allow from all
</Files>

在上述例子中,
AuthType Basic指定了认证类型为基本认证,
AuthName指定了认证提示信息,
AuthUserFile指定了存储用户凭证的文件路径,
Require valid-user指定了需要验证的用户。

用于匹配特定的文件,例如 .php 或 .html 文件,并对它们进行相应的认证和访问限制。

用于指定特定的文件,例如 login.php,并对它们进行特定的访问控制,例如允许所有用户访问。

需要注意的是,为了使用 .htaccess 文件来限制页面访问,需要确保 Web 服务器已经启用了 .htaccess 文件的支持,并且允许覆盖默认配置。否则,.htaccess 文件中的指令将无法生效。

三、web.config

1.什么是web.config?

web.config 是一个 XML 格式的配置文件,通常在 ASP.NET Web 应用程序中使用。它提供了一种在 Web 应用程序级别上配置应用程序行为的方式,可以包含一些指令,用于控制应用程序的访问、安全、缓存、错误处理等方面的行为。

2. web.config限制页面访问示例

在 web.config 文件中,可以使用<authorization>元素来限制页面的访问。该元素可以包含一系列的 <allow><deny> 子元素,用于指定哪些用户或角色有权访问页面,哪些用户或角色没有访问权限。

例如,下面的 web.config 文件配置了只有管理员角色可以访问 Admin.aspx 页面,普通用户和未授权用户无法访问:

<configuration>
  <system.web>
    <authorization>
      <allow roles="Admin"/>
      <deny users="*"/>
    </authorization>
  </system.web>
</configuration>

在上述示例中, 指定了只有 Admin 角色的用户有权访问该页面, 则指定了所有未授权的用户都无法访问该页面。

除了使用角色和用户来限制页面的访问之外,还可以使用其他一些条件,例如 IP 地址、HTTP 方法、HTTP 头等。例如,下面的 web.config 文件配置了只有来自特定 IP 地址的请求才可以访问 Admin.aspx 页面:

<configuration>
  <system.web>
    <authorization>
      <allow ips="192.168.1.1"/>
      <deny users="*"/>
    </authorization>
  </system.web>
</configuration>

在上述示例中,<allow ips="192.168.1.1"/> 指定了只有来自 IP 地址为 192.168.1.1 的请求才可以访问该页面,<deny users="*"/> 则指定了所有未授权的用户都无法访问该页面。

四、nginx.config

1.什么是nginx.config?

Nginx 配置文件(nginx.conf)是 Nginx Web 服务器的主要配置文件,用于控制服务器的行为。Nginx 配置文件采用类似于 C 语言的语法,由一系列的指令和块组成,用于定义服务器监听哪些端口和域名,如何处理 HTTP 请求,如何进行负载均衡等。

2.nginx.config限制页面访问示例

在 Nginx 中,可以使用 location 指令来限制页面的访问。location 指令用于匹配 URL,并且可以指定一系列的条件,例如请求方法、请求头、请求参数等,从而决定是否允许访问该 URL。

以下是一个示例,演示如何使用 location 指令来限制页面的访问:

server {
    listen       80;
    server_name  example.com;

    location /admin {
        # 只允许来自特定 IP 地址的请求
        allow 192.168.1.1;
        deny all;
        
        # 只允许 POST 请求
        if ($request_method != POST) {
            return 405;
        }
        
        # 只允许特定用户访问
        auth_basic           "Restricted";
        auth_basic_user_file /etc/nginx/.htpasswd;
        
        # 其他配置
        ...
    }
    
    # 其他配置
    ...
}

在上述示例中,location /admin 表示匹配所有以 /admin 开头的 URL。该 location 块包含了一系列的限制条件,从而限制了对 /admin 页面的访问:

  • allow 192.168.1.1; deny all; 只允许来自 IP 地址为 192.168.1.1 的请求访问该页面,其他请求都会被拒绝。
  • if ($request_method != POST) { return 405; } 只允许使用 POST 方法访问该页面,其他请求都会返回 405 错误。
  • auth_basic “Restricted”; auth_basic_user_file /etc/nginx/.htpasswd; 只允许在验证通过的情况下访问该页面,需要输入用户名和密码。用户名和密码存储在 /etc/nginx/.htpasswd 文件中。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值