一、最常用的方法(代码中限制)

1、如何限制IP

  1. function get_new_ip(){
  2. if(getenv('HTTP_CLIENT_IP')) {
  3. $onlineip = getenv('HTTP_CLIENT_IP');
  4. } elseif(getenv('HTTP_X_FORWARDED_FOR')) {
  5. $onlineip = getenv('HTTP_X_FORWARDED_FOR');
  6. } elseif(getenv('REMOTE_ADDR')) {
  7. $onlineip = getenv('REMOTE_ADDR');
  8. } else {
  9. $onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
  10. }
  11. return $onlineip;
  12. }
  13.  
  14. $onlineip = get_new_ip();
  15. $wip = ['127.0.0.1'];
  16.  
  17. if(!in_array($onlineip, $wip)){
  18. header("HTTP/1.1 404 Not Found");
  19. header("Status: 404 Not Found");
  20. exit;
  21. }

2、进行密码验证

  1. ///////////////// Password protect ////////////////////////////////////////////////////////////////
  2. define('ADMIN_USERNAME','test'); // Admin Username
  3. define('ADMIN_PASSWORD','test'); // Admin Password
  4.  
  5. if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
  6. $_SERVER['PHP_AUTH_USER'] != ADMIN_USERNAME || $_SERVER['PHP_AUTH_PW'] != ADMIN_PASSWORD) {
  7. Header("WWW-Authenticate: Basic realm=\"discuz Login\"");
  8. Header("HTTP/1.0 401 Unauthorized");
  9.  
  10. echo <<<EOB
  11. <html><body>
  12. <h1>Rejected!</h1>
  13. <big>Wrong Username or Password!</big>
  14. </body></html>
  15. EOB;
  16. exit;
  17. }
  18. ////////// END OF DEFAULT CONFIG AREA /////////////////////////////////////////////////////////////

二、NGINX中限制

1、IP限制

官方文档:http://nginx.org/en/docs/http/ngx_http_access_module.html

  1. location / {
  2. deny 192.168.1.1;
  3. allow 192.168.1.0/24;
  4. allow 10.1.1.0/16;
  5. allow 2001:0db8::/32;
  6. deny all;
  7. }

2、auth_basic 本机认证(nginx默认支持)

官方文档:http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html

安装密码工具

  1. yum -y install httpd-tools

生成密码

  1. htpasswd -c pass.db
  1. nginx中配置(需要维护 pass.db 文件)
  1. auth_basic "User Authentication";
  2. auth_basic_user_file conf/pass.db;

3、ngx_http_auth_request_module 第三方认证

官方文档:http://nginx.org/en/docs/http/ngx_http_auth_request_module.html

需要安装:--with-http_auth_request_module  模块

  1. #auth_basic "User Authentication";
  2. #auth_basic_user_file conf/pass.db;
  3.  
  4. auth_request /auth;
  5.  
  6. location = /auth {
  7. proxy_pass ...
  8. proxy_pass_request_body off;
  9. proxy_set_header Content-Length "";
  10. proxy_set_header X-Original-URI $request_uri;
  11. }

这里可以反代到,http://www.auth.com/api/HttpBasicAuthenticate.php,代码如下:

  1. ///////////////// Password protect ////////////////////////////////////////////////////////////////
  2. define('ADMIN_USERNAME','test'); // Admin Username
  3. define('ADMIN_PASSWORD','test'); // Admin Password
  4.  
  5. if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
  6. $_SERVER['PHP_AUTH_USER'] != ADMIN_USERNAME || $_SERVER['PHP_AUTH_PW'] != ADMIN_PASSWORD) {
  7. Header("WWW-Authenticate: Basic realm=\"discuz Login\"");
  8. Header("HTTP/1.0 401 Unauthorized");
  9.  
  10. echo <<<EOB
  11. <html><body>
  12. <h1>Rejected!</h1>
  13. <big>Wrong Username or Password!</big>
  14. </body></html>
  15. EOB;
  16. exit;
  17. }
  18. ////////// END OF DEFAULT CONFIG AREA /////////////////////////////////////////////////////////////

4、 ngx_http_auth_jwt_module 第三方认证

官方文档:http://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html

  1. location / {
  2. auth_jwt "closed site";
  3. auth_jwt_key_file conf/keys.json;
  4. auth_jwt_claim_set $email info e-mail;
  5. auth_jwt_claim_set $job info "job title";
  6. }

加密算法更加复杂

原理同上

配置代码:

  1. location ~ /admin/.*php$ {
  2. location = /admin.php {
  3.  
  4. allow 127.0.0.1;
  5. deny all;
  6.  
  7. auth_basic "Authorized users only";
  8. auth_basic_user_file authkey/auth.com.db;
  9.  
  10. fastcgi_pass common;
  11. fastcgi_index index.php;
  12. include fastcgi_params;
  13. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  14.  
  15. }

【nginx&php】后台权限认证方式的更多相关文章

  1. Nginx 的两种认证方式

    简介: 今天来研究一下 Nginx 的两种认证方式. 1.auth_basic 本机认证 2.ngx_http_auth_request_module 第三方认证 一.安装 Nginx shell & ...

  2. thinkphp Auth认证类 比RBAC更好的权限认证方式(Auth类认证)

    thinkphp Auth认证类 比RBAC更好的权限认证方式(Auth类认证)    Auth 类已经在ThinkPHP代码仓库中存在很久了,但是因为一直没有出过它的教程, 很少人知道它, 它其实比 ...

  3. 比RBAC更好的权限认证方式(Auth类认证)

    Auth 类已经在ThinkPHP代码仓库中存在很久了,但是因为一直没有出过它的教程, 很少人知道它, 它其实比RBAC更方便 . RBAC是按节点进行认证的,如果要控制比节点更细的权限就有点困难了, ...

  4. thinkphp 比RBAC更好的权限认证方式(Auth类认证)

    Auth 类已经在ThinkPHP代码仓库中存在很久了,但是因为一直没有出过它的教程, 很少人知道它, 它其实比RBAC更方便 . RBAC是按节点进行认证的,如果要控制比节点更细的权限就有点困难了, ...

  5. Cognos权限认证CJP方式之用户密码加密

    在项目开发过程中,用户往往对系统的安全都有明确的要求,下面针对cognos门户认证用户密码如何加密来提供一个简单的wf 1Cognos权限认证方式:CJP 2Cognos用户数据库类型:Oracle ...

  6. python测试开发django-rest-framework-61.权限认证(permission)

    前言 用户登录后,才有操作当前用户的权限,不能操作其它人的用户,这就是需要用到权限认证,要不然你登录自己的用户,去操作别人用户的相关数据,就很危险了. authentication是身份认证,判断当前 ...

  7. JAVAEE——BOS物流项目10:权限概述、常见的权限控制方式、apache shiro框架简介、基于shiro框架进行认证操作

    1 学习计划 1.演示权限demo 2.权限概述 n 认证 n 授权 3.常见的权限控制方式 n url拦截权限控制 n 方法注解权限控制 4.创建权限数据模型 n 权限表 n 角色表 n 用户表 n ...

  8. 1、 Shiro框架:认证,授权(验权 2. Shiro框架实现权限控制方式:

    1. Shiro框架:认证,授权(验权) a) 认证逻辑:applicationCode—>通过工具类获取subject对象,调用login方法参数令牌信息->安全管理器------> ...

  9. SpringBoot之SpringSecurity权限注解在方法上进行权限认证多种方式

    前言 Spring Security支持方法级别的权限控制.在此机制上,我们可以在任意层的任意方法上加入权限注解,加入注解的方法将自动被Spring Security保护起来,仅仅允许特定的用户访问, ...

随机推荐

  1. html-盒子模型及pading和margin相关

    margin: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  2. Effective前端1---chapter 2 用CSS画一个三角形

    1.CSS画三角形的画法 第一步:三角形可以用border画出来,首先一个有四个border的div长这样: <div class="triangle"></di ...

  3. 躲不掉的 lambda 表达式

    lambda 表达式是 Java8 的新特性,虽说都发布很久了,但是不到万不得已是肯定不会研究这个的,现在就是那不得不学习的时候了. 本文主要说一下什么 lambda 表达式.Java 中为什么要有 ...

  4. linux 学习笔记 查看文件篇

    1 diff 比较两个文件 #diff -y test.txt test.txt 输出源文件和目标文件的全部.分左右两栏. aaaa aaaa bbb | b ccc < > ddd 注  ...

  5. 前后端通过API交互

    前两篇已经写好了后端接口,和前段项目环境也搭建好了 现在要通过接口把数据展示在页面上 先占位置写架子 创建一个头部组件和底部组件占位置 <template> <h1>这是头部组 ...

  6. Eclipse块选择快捷键

    快捷键:Shift+Alt+A 功能:可删除复制选中区域中的内容 效果图:

  7. BZOJ.4650.[NOI2016]优秀的拆分(后缀数组 思路)

    BZOJ 洛谷 令\(st[i]\)表示以\(i\)为开头有多少个\(AA\)这样的子串,\(ed[i]\)表示以\(i\)结尾有多少个\(AA\)这样的子串.那么\(Ans=\sum_{i=1}^{ ...

  8. Scrapy基础(二)————Scrapy的安装和目录结构

    Scrapy安装: 1,首先进入虚拟环境    2,使用国内豆瓣源进行安装,快! pip install -i https://pypi.douban.com/simple/ scrapy 3,特殊情 ...

  9. Tomcat安装与环境变量的配置

    Tomacat的下载  去Tomcat官网下载,我使用的是apache-tomcat-7.0.78的版本. 安装  下载完成之后,我们解压缩到相应的目录.这里我解压缩到d盘下面 1.然后去配置系统的环 ...

  10. npm install出现"Unexpected end of JSON input while parsing near"

    打开命令行输入 npm cache clean --force 重新npm i,即可解决报错