关于知道其他平台的用户名和密码,嵌入自己的系统直接连接过去

1、先要分析对方系统是如何登录的,有的是通过表单提交用户名和密码,就直接进入到主页了,有的是通过接口登录,登录成功以后再重定向到主页;还有其他,这个直接连接到对方系统实现的复杂度跟目标系统有关。

2、如果是表单方式提交,直接得到action地址和用户名密码name,直接写入<a>,<iframe>标签,进行尝试,有可能就直接链接过去了(只是可能),注意新版本谷歌的SameSite问题;

3、如果是先通过接口登录,然后再重定向到主页,这个时候,在你自己的系统中进行模拟登录,然后重定向,可能成功,也可能失败,这个也是跟对方系统有关的,是否跨域问题。

如果有跨域限制(跨域是浏览器的安全考虑,其实请求是成功了的,但是因为跨域,浏览器不会把这部分数据拿出来用而已),这个在前端好像不能解决,解决跨域主要是refer头,但是直接在ajax设置refer头,浏览器不认同你的修改;

这个时候就考虑进行后端处理,搭建一个nginx服务,你所有的页面、接口请求都指向nginx,然后nginx进行分流,如果是你自己的系统路径,就往你自己的应用上分发,如果是目标系统的路径就往目标系统进行分发,这个时候,你的请求就不会出现跨域了,因为你所有的请求都是指向nginx;

4、如果带有一些验证码之类的,暂时没考虑到;

给一个demo的关键代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="./jquery.min.js"></script>
</head>
<body>

<a href="javascript:void(0)" onclick="clickbtn()">跳转到xxl-job管理中心</a>

</body>
<script type="text/javascript">
function clickbtn(){
    $.ajax({
        type: "post",
        url: "http://localhost/xxl-job-admin/login",
        dataType: "json",
        data: {
            userName: "admin",
            password: "xxxxxxxx"
        },
        success: function (data) {
             window.location.href="http://localhost/xxl-job-admin/";
        },error:function(error){
             console.log(error);
        }
    });
}
</script>
</html>

nginx.conf的配置片段

		location / {
			proxy_pass http://localhost:8080/; #自己系统地址
		}
		
		location /xxl-job-admin/ {
			proxy_pass http://10.xx.xx.xxx:8001/xxl-job-admin/; #目标系统地址
		}

nginx起搬运工的作用,它不会进行跨域验证。

posted @ 2020-03-18 16:44  理舞  阅读(606)  评论(0编辑  收藏  举报