【nginx&php】后台权限认证方式
一、最常用的方法(代码中限制)
1、如何限制IP
- function get_new_ip(){
- if(getenv('HTTP_CLIENT_IP')) {
- $onlineip = getenv('HTTP_CLIENT_IP');
- } elseif(getenv('HTTP_X_FORWARDED_FOR')) {
- $onlineip = getenv('HTTP_X_FORWARDED_FOR');
- } elseif(getenv('REMOTE_ADDR')) {
- $onlineip = getenv('REMOTE_ADDR');
- } else {
- $onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
- }
- return $onlineip;
- }
- $onlineip = get_new_ip();
- $wip = ['127.0.0.1'];
- if(!in_array($onlineip, $wip)){
- header("HTTP/1.1 404 Not Found");
- header("Status: 404 Not Found");
- exit;
- }
2、进行密码验证
- ///////////////// Password protect ////////////////////////////////////////////////////////////////
- define('ADMIN_USERNAME','test'); // Admin Username
- define('ADMIN_PASSWORD','test'); // Admin Password
- if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
- $_SERVER['PHP_AUTH_USER'] != ADMIN_USERNAME || $_SERVER['PHP_AUTH_PW'] != ADMIN_PASSWORD) {
- Header("WWW-Authenticate: Basic realm=\"discuz Login\"");
- Header("HTTP/1.0 401 Unauthorized");
- echo <<<EOB
- <html><body>
- <h1>Rejected!</h1>
- <big>Wrong Username or Password!</big>
- </body></html>
- EOB;
- exit;
- }
- ////////// END OF DEFAULT CONFIG AREA /////////////////////////////////////////////////////////////
二、NGINX中限制
1、IP限制
官方文档:http://nginx.org/en/docs/http/ngx_http_access_module.html
- location / {
- deny 192.168.1.1;
- allow 192.168.1.0/24;
- allow 10.1.1.0/16;
- allow 2001:0db8::/32;
- deny all;
- }
2、auth_basic 本机认证(nginx默认支持)
官方文档:http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html
安装密码工具
- yum -y install httpd-tools
生成密码
- htpasswd -c pass.db
- nginx中配置(需要维护 pass.db 文件)
- auth_basic "User Authentication";
- 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 模块
- #auth_basic "User Authentication";
- #auth_basic_user_file conf/pass.db;
- auth_request /auth;
- location = /auth {
- proxy_pass ...
- proxy_pass_request_body off;
- proxy_set_header Content-Length "";
- proxy_set_header X-Original-URI $request_uri;
- }
这里可以反代到,http://www.auth.com/api/HttpBasicAuthenticate.php,代码如下:
- ///////////////// Password protect ////////////////////////////////////////////////////////////////
- define('ADMIN_USERNAME','test'); // Admin Username
- define('ADMIN_PASSWORD','test'); // Admin Password
- if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
- $_SERVER['PHP_AUTH_USER'] != ADMIN_USERNAME || $_SERVER['PHP_AUTH_PW'] != ADMIN_PASSWORD) {
- Header("WWW-Authenticate: Basic realm=\"discuz Login\"");
- Header("HTTP/1.0 401 Unauthorized");
- echo <<<EOB
- <html><body>
- <h1>Rejected!</h1>
- <big>Wrong Username or Password!</big>
- </body></html>
- EOB;
- exit;
- }
- ////////// END OF DEFAULT CONFIG AREA /////////////////////////////////////////////////////////////
4、 ngx_http_auth_jwt_module 第三方认证
官方文档:http://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html
- location / {
- auth_jwt "closed site";
- auth_jwt_key_file conf/keys.json;
- auth_jwt_claim_set $email info e-mail;
- auth_jwt_claim_set $job info "job title";
- }
加密算法更加复杂
原理同上
配置代码:
- location ~ /admin/.*php$ {
- location = /admin.php {
- allow 127.0.0.1;
- deny all;
- auth_basic "Authorized users only";
- auth_basic_user_file authkey/auth.com.db;
- fastcgi_pass common;
- fastcgi_index index.php;
- include fastcgi_params;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- }
【nginx&php】后台权限认证方式的更多相关文章
- Nginx 的两种认证方式
简介: 今天来研究一下 Nginx 的两种认证方式. 1.auth_basic 本机认证 2.ngx_http_auth_request_module 第三方认证 一.安装 Nginx shell & ...
- thinkphp Auth认证类 比RBAC更好的权限认证方式(Auth类认证)
thinkphp Auth认证类 比RBAC更好的权限认证方式(Auth类认证) Auth 类已经在ThinkPHP代码仓库中存在很久了,但是因为一直没有出过它的教程, 很少人知道它, 它其实比 ...
- 比RBAC更好的权限认证方式(Auth类认证)
Auth 类已经在ThinkPHP代码仓库中存在很久了,但是因为一直没有出过它的教程, 很少人知道它, 它其实比RBAC更方便 . RBAC是按节点进行认证的,如果要控制比节点更细的权限就有点困难了, ...
- thinkphp 比RBAC更好的权限认证方式(Auth类认证)
Auth 类已经在ThinkPHP代码仓库中存在很久了,但是因为一直没有出过它的教程, 很少人知道它, 它其实比RBAC更方便 . RBAC是按节点进行认证的,如果要控制比节点更细的权限就有点困难了, ...
- Cognos权限认证CJP方式之用户密码加密
在项目开发过程中,用户往往对系统的安全都有明确的要求,下面针对cognos门户认证用户密码如何加密来提供一个简单的wf 1Cognos权限认证方式:CJP 2Cognos用户数据库类型:Oracle ...
- python测试开发django-rest-framework-61.权限认证(permission)
前言 用户登录后,才有操作当前用户的权限,不能操作其它人的用户,这就是需要用到权限认证,要不然你登录自己的用户,去操作别人用户的相关数据,就很危险了. authentication是身份认证,判断当前 ...
- JAVAEE——BOS物流项目10:权限概述、常见的权限控制方式、apache shiro框架简介、基于shiro框架进行认证操作
1 学习计划 1.演示权限demo 2.权限概述 n 认证 n 授权 3.常见的权限控制方式 n url拦截权限控制 n 方法注解权限控制 4.创建权限数据模型 n 权限表 n 角色表 n 用户表 n ...
- 1、 Shiro框架:认证,授权(验权 2. Shiro框架实现权限控制方式:
1. Shiro框架:认证,授权(验权) a) 认证逻辑:applicationCode—>通过工具类获取subject对象,调用login方法参数令牌信息->安全管理器------> ...
- SpringBoot之SpringSecurity权限注解在方法上进行权限认证多种方式
前言 Spring Security支持方法级别的权限控制.在此机制上,我们可以在任意层的任意方法上加入权限注解,加入注解的方法将自动被Spring Security保护起来,仅仅允许特定的用户访问, ...
随机推荐
- html-盒子模型及pading和margin相关
margin: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- Effective前端1---chapter 2 用CSS画一个三角形
1.CSS画三角形的画法 第一步:三角形可以用border画出来,首先一个有四个border的div长这样: <div class="triangle"></di ...
- 躲不掉的 lambda 表达式
lambda 表达式是 Java8 的新特性,虽说都发布很久了,但是不到万不得已是肯定不会研究这个的,现在就是那不得不学习的时候了. 本文主要说一下什么 lambda 表达式.Java 中为什么要有 ...
- linux 学习笔记 查看文件篇
1 diff 比较两个文件 #diff -y test.txt test.txt 输出源文件和目标文件的全部.分左右两栏. aaaa aaaa bbb | b ccc < > ddd 注 ...
- 前后端通过API交互
前两篇已经写好了后端接口,和前段项目环境也搭建好了 现在要通过接口把数据展示在页面上 先占位置写架子 创建一个头部组件和底部组件占位置 <template> <h1>这是头部组 ...
- Eclipse块选择快捷键
快捷键:Shift+Alt+A 功能:可删除复制选中区域中的内容 效果图:
- BZOJ.4650.[NOI2016]优秀的拆分(后缀数组 思路)
BZOJ 洛谷 令\(st[i]\)表示以\(i\)为开头有多少个\(AA\)这样的子串,\(ed[i]\)表示以\(i\)结尾有多少个\(AA\)这样的子串.那么\(Ans=\sum_{i=1}^{ ...
- Scrapy基础(二)————Scrapy的安装和目录结构
Scrapy安装: 1,首先进入虚拟环境 2,使用国内豆瓣源进行安装,快! pip install -i https://pypi.douban.com/simple/ scrapy 3,特殊情 ...
- Tomcat安装与环境变量的配置
Tomacat的下载 去Tomcat官网下载,我使用的是apache-tomcat-7.0.78的版本. 安装 下载完成之后,我们解压缩到相应的目录.这里我解压缩到d盘下面 1.然后去配置系统的环 ...
- npm install出现"Unexpected end of JSON input while parsing near"
打开命令行输入 npm cache clean --force 重新npm i,即可解决报错