zoukankan      html  css  js  c++  java
  • [Nginx]用Nginx实现与应用结合的訪问控制

    应用场景:图片等资源须要设置权限。如:仅仅有认证过的用户才干訪问自己的图片。

    解决的方法:使用Nginx的防盗链模块http_secure_link能够实现,该模块默认情况下不包括。故在安装时要加上--with-http_secure_link_module

    该模块依据两个參数控制权限訪问,一个是过期时间(即该链接在这个时间之前可訪问。过期后无法訪问)。该參数主要出于安全考虑。

    还有一个是通过md5算法算出来的KEY,一般通过uri计算

    举例:

        server {
            listen       80;
            server_name  192.168.1.22;
    
            root /home/search/upload/portal_upload/user;
            location / {
                index  index.html index.htm;
            }
    
            location /img/dossier/ {
                secure_link $arg_st,$arg_e;
                secure_link_md5 guahao@345$uri$arg_e;
    
                if ($secure_link = "") {
                    return 403;
                }
                if ($secure_link = "0") {
                    return 403;
                }
       
                rewrite ^/img/dossier/(.*)$ /img/dossier/$1 break;
            }
    }
    上面的secure_link定义了控制权限的两个參数(各自是st, e)

    当中e就是上述的过期时间,建议e = 当前时间 + 有效期限(5分钟)
    比如:
    e = date +%s -d "December 22, 2014 12:22:03"
       = 1419222123
    st的计算公式例如以下:md5(PKEY,uri,e)。当中PKEY是自己定义的常量

    比如:
    st = php -r 'print str_replace("=", "",strtr(base64_encode(md5("guahao@345/img/dossier/16/641fd565-ec87-4cbe-b4ae-7eedba41bb0e.jpg1419222123",TRUE)),"+/","-_")) . " ";'

        =13c9kZrZT1qnNgpG4Vtksw

    效果例如以下:

    http://192.168.1.22/img/dossier/16/641fd565-ec87-4cbe-b4ae-7eedba41bb0e.jpg  --不可訪问
    http://192.168.1.22/img/dossier/16/641fd565-ec87-4cbe-b4ae-7eedba41bb0e.jpg?st=13c9kZrZT1qnNgpG4Vtksw&e=1419222123  --过期前可訪问。过期后不可訪问
    http://192.168.1.22/img/headpic/13/13_140x140.jpg   --不在dossier以下的图片没有訪问限制


    OK,到此为此我们基本实现的基于应用的权限控制,且方法灵活。由于e和st的生成由应用程序来控制,能进行随意的改动和变动,而架构不受影响。


查看全文
  • 相关阅读:
    json数组去重
    java socket API
    java网络编程精解demo1---读取用户控制台的输入的数据并显示
    【CodeForces 489A】SwapSort
    【CSU 1556】Pseudoprime numbers
    【CodeForces 472A】Design Tutorial: Learn from Math
    【CodeForces 605A】BUPT 2015 newbie practice #2 div2-E
    【UVALive 3905】BUPT 2015 newbie practice #2 div2-D-3905
    【HDU 4925】BUPT 2015 newbie practice #2 div2-C-HDU 4925 Apple Tree
    【UVA 401】BUPT 2015 newbie practice #2 div2-B-Palindromes
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10860185.html
  • Copyright © 2011-2022 走看看