如何设置网站目录:网站改个目录就要收3.8W
如何设置网站目录:网站改个目录就要收3.8W发现js加密后完全不可读,别说替换了,还好从浏览器的报错堆栈信息中发现了关键点,就是报错的方法名,如下:完全懵逼,唯一还好的是方法名没有加密,上帝还是留了一扇窗的所以首先想到了nginx的sub_filter就可以完成这样的事情,在子系统和前端行里统一的负载均衡之间加一个nginx,对子系统的内容替换后再返回给用户,理论上没有任何问题,说干就干,本地配置测试了一把,没有任何问题,大概的nginx配置文件如下:指定规则的路径替换为最终需要的路径好了,配置好了,测试一把,结果发现问题了,这样直接替换只能替换明文的文件,但是这个系统的所有js文件都是加密过的,这样的替换方式无能为力了,没办法,只能硬着头皮去研究他这个加密的js文件,我把js文件内容复制出来,格式化一下,是这样的:
朋友的客户采用了一套XX系统(这系统就不说了),原来的访问方式是http://二级域名/系统路径的方式访问,后面行里要求都统一用公用的域名作为入口,不同子系统使用不同的二级目录进行访问,也就是原来的访问路径要改成http://公用名/固定路径1/固定路径2/系统路径的方式访问,好了,问题来了,这样访问的话,系统的所有静态文件还有一些js请求以及一些后端返回的请求地址都需要统一修改,拼接上前面的公用域名加固定路径1和固定路径2,因为很多地方用到了绝对路径,不改的话前端负载均衡之后用户打开一些资源会404,这时供应商说了,改可以,要3.8W,评估了下工期要18个人天,说要改几十万个地方,我了个 ,在他们系统里面顶多查找替换就能解决了,怎么找要18个人天,又不是很庞大的系统。朋友只好找到我,问我有啥解决方法没。
可以发现很多资源是通过js动态加载进来的,会404
但是js文件是完全加密的,要修改这url不方便
经过分析发现有很多资源是通过js动态加载进来的,还有一些系统返回的参数,里面的url是写死的完整路径,要想不改代码实现,还是比较麻烦,后面灵光一闪,是不是可以用一个方法把他系统返回的所有内容过滤一遍,替换成我需要的内容再返回给用户浏览器呢,这样不就不需要修改原始代码了吗?
所以首先想到了nginx的sub_filter就可以完成这样的事情,在子系统和前端行里统一的负载均衡之间加一个nginx,对子系统的内容替换后再返回给用户,理论上没有任何问题,说干就干,本地配置测试了一把,没有任何问题,大概的nginx配置文件如下:
指定规则的路径替换为最终需要的路径
好了,配置好了,测试一把,结果发现问题了,这样直接替换只能替换明文的文件,但是这个系统的所有js文件都是加密过的,这样的替换方式无能为力了,没办法,只能硬着头皮去研究他这个加密的js文件,我把js文件内容复制出来,格式化一下,是这样的:
完全懵逼,唯一还好的是方法名没有加密,上帝还是留了一扇窗的
发现js加密后完全不可读,别说替换了,还好从浏览器的报错堆栈信息中发现了关键点,就是报错的方法名,如下:
定位到方法名称,就容易多了
所以根据方法名找到加密后的js文件,发现是这样的:
发现参数是直接传入的,但是参数也是加密的,抓头
找到了方法调用的地方,但是发现参数还是加密的,抓头ing,没法解密,怎么办呢?突然想到,直接用console输出这个参数会如何?赶紧试试:
成了,可不就是我要的东西吗
完美,这不就是我要的东西吗?有了这就相当于有了密文对应明文的对应关系,不需要去解密了,所以直接把这个密文替换成我需要的对应的内容就行了,nginx配置代码如下:
sub_filter "_0x5ea9('10c')" "'/xxx-xx/xxx-xx/user/assets/css/xx-center-'";
最后测试,一切正常,搞定,完整nginx配置如下:
完整nginx配置