当前位置: 代码网 > it编程>编程语言>Javascript > 使用nginx代理https网站,并注入自己js的方法

使用nginx代理https网站,并注入自己js的方法

2024年08月06日 Javascript 我要评论
使用nginx代理https网站,并注入自己js的方法

最近遇到一个变态的问题,客户要我们做的网站收集到的数据直接上传到他们上级的一个数据汇总系统,但是上级系统已经运行了很多年,貌似没有再进行二次开发的可能了,并且别人的系统也不一定给我们对接,那么有什么办法能把我们的数据直接在用户提交表单的时候直接就同步到上级系统里去么?

经过我多次实验,发现了一种简单可行的方式:nginx代理+js注入

由于对方系统使用了https,所以nginx代理后要将响应进行解压后再注入js。

nginx配置如下

server {
			listen       80;
			listen       [::]:80;
			server_name  mytestweb.cn;
			location / {
				proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
				proxy_set_header x-real-ip $remote_addr;//这两句是透传客户端ip,防止被代理服务器把我们的服务器ip拉黑
				proxy_set_header accept-encoding '';#禁用压缩,这一句必须写,否则注入失败
                #这里是注入自己js的方法
				sub_filter '</head>' '<script charset="utf-8" src="//mytestweb.cn/my.js"></script></head>';
				sub_filter_once on; #匹配到第一个就替换,其他不管
				proxy_pass   https://www.baidu.com;#这里是你要代理的网站
			}
	}
	server { #配置https,为啥要配https,因为http不能调用https资源,现在大部分网站都是https,具体视自己情况而定
		listen 443 ssl;
		server_name mytestweb.cn;
		ssl_certificate ./cert/mytestweb.cn.pem; #这里是ssl key文件存放的绝对路径,根据自己的文件名称和路径来写
		ssl_certificate_key ./cert/mytestweb.cn.key; #这里是ssl key文件存放的绝对路径,根据自己的文件名称和路径来写
		ssl_session_cache shared:ssl:1m;
		ssl_session_timeout 5m;
		ssl_ciphers high:!anull:!md5;
		ssl_prefer_server_ciphers on;
        #以上是配置https的,这样保证自己的域名也支持https,https的证书自己去申请
        #以下跟上边是一样的,不用改
		location / {
				proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
				proxy_set_header x-real-ip $remote_addr;//这两句是透传客户端ip,防止被代理服务器把我们的服务器ip拉黑
				proxy_set_header accept-encoding '';#禁用压缩,这一句必须写,否则注入失败
				sub_filter '</head>' '<script charset="utf-8" src="//mytestweb.cn/my.js"></script></head>';
				sub_filter_once on; #匹配到第一个就替换,其他不管
				proxy_pass   https://www.baidu.com;#这里是你要代理的网站
			}
	}

my.js写一行弹窗代码

alert("我是注入的js,现在已经执行了!");

nginx -s reload 重启一下nginx

然后测试一下看

成功注入,现在就可以愉快的在自己的js里写代码了。

---------------------------------------------------

注意:

1、这种方式不适合开启了csp的网站,如果你发现自己的网站被js注入了,可以开启csp保证不被注入。

2、由于本地代理了所有的请求,所以如果并发比较大的情况不适合这种方式,或者你自己弄个牛逼的机器也是ok的

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com