问题背景:   

  当服务器文件可以被直接ip+路径访问时,这时服务器文件是不安全的,那么如何解决此类问题?刚好最近项目有这么个需求,自己的demo实现可以供大家参考,有相关问题或其他方案可以互相了解和学习。

Nginx配置:

 

 

目的:

 

  通过Nginx判断访问用户文件路径是否带了参数,如果没带立即返回403,可以防止大量恶意访问,缩短请求调用链,降低后端服务器请求访问量。

 

使用Nginx配置屏蔽路由:

 

location ^~ /woshipingbistr/ {
            proxy_pass http://127.0.0.1:9971/File/group1/;
        }

 

按真实资源路径访问:

 

 

切换为代理路径访问:

 

 

添加参数校验逻辑:

location ^~ /woshipingbistr/ {
            set $flag 0;
            if ($args ~* userid=(\w+?)(&|$) ) {
                set $flag "${flag}1";
            }
            if ($args ~* token=(\w+?)(&|$) ) {
                set $flag "${flag}1";
            }
            if ($flag != "011"){
                return 403;
            }
            proxy_pass http://127.0.0.1:9971/File/group1/;
        }

再次使用上面的url访问:

 

 

加上参数和任意value

 

http://localhost:8800/woshipingbistr/3f272c8ac1295341c10785ac030e695f.jpeg?userid=1&token=1111

 

增加拦截器:

目的:

  Nginx转发的请求做权限校验,符合的重定向到真是路径并返回,不符合的返回403

 

 

 

配置拦截url

 

 

再次使用之前为通过Nginx简单校验随便加的参数值访问:

 

 

 

使用和后端固定匹配值的参数值访问时:

 

posted on 2022-03-04 11:31  喃博思睿  阅读(65)  评论(0编辑  收藏  举报