1、场景

        最近一段时间做一个项目的交付,遇到一个特殊的问题,我们项目访问端有pc电脑端、微信小程序。由于是交付给具有国企性质的甲方,pc电脑端只能在内网访问,微信小程序是可以外网访问的,而且数据是互通的,图片只有一个资源服务器存储,但是这张图片在两个端都需要展示。

        基于这个场景下,且考虑到运维成本、开发成本、工作量,最后设定了这个方案。

2、方案描述

        采用nginx的自带功能,过滤敏感内容替换。(暂时我这么叫了,没去官网查这个具体的叫法)

3、方案解决详细

         对于前端和后端代码,不做修改处理,原先图片数据存储方式不做修改,只是通过外网的nginx代理来进行数据篡改,达到预期目标。

3.1、nginx的安装

       由于我采用的ubuntu虚拟机进行场景模拟实现解决方案,所以提供了nginx的ubuntu下的安装。

       安防方式方法较多,参考一篇博客来完成

       

       不一样点:

       最准备环境没什么区别,在进行nginx安装的时候,不采用make直接安装,采用命令:./configure --prefix=/usr/local/nginx1.12 --with-http_sub_module && make

       在执行完成以后,在执行make install

        最后在结果送上

NGINX 防止文件暴露 nginx防篡改_nginx篡改数据

        说明,安装最好采用用户权限安装,避免一些权限问题,我这由于是自己系统,采用了root权限安装的。

3.2、两处验证服务的设定

3.2.1、静态页面的代理

NGINX 防止文件暴露 nginx防篡改_nginx特定内容替换_02

静态页面,内容只有一个网络地址,我这的目的初衷主要就是解决图片在不同网络区域的使用。

nginx.conf的配置

NGINX 防止文件暴露 nginx防篡改_nginx特定内容替换_03

配置文件内容,由于已经验证通过,所以有些内容没有去除掉

NGINX 防止文件暴露 nginx防篡改_nginx特定内容替换_04

验证效果:

NGINX 防止文件暴露 nginx防篡改_NGINX 防止文件暴露_05

单纯的静态页面已经进行了界面篡改,目的达到。

3.2.2、普通的javaWeb接口的代理      

自己搭建了一个最简单的javaweb的接口,仅供参考:

NGINX 防止文件暴露 nginx防篡改_nginx代理_06

nginx的配置代理:

NGINX 防止文件暴露 nginx防篡改_nginx篡改数据_07

验证效果:

NGINX 防止文件暴露 nginx防篡改_NGINX 防止文件暴露_08

可以看到,响应的参数已经得到了改变,达到了自己预期的目的。

        由于方案的改变,在项目的考虑上,不进节约了大量的工作量,而且也保证了修改面很小,达到了投入最少的工作量,得到正确的回报。