提高接口安全性(阿里云)

别看了,走吧,代码写到最后发现不能解决

不想浪费大家时间!

谢谢大家!

安全第一,预防为主  -----格言警句


1.事情由来

我通过springBoot写了一个网站,不涉及复杂加密(token认证等)。这样如果有那种不怀好意的程序员,知道你的接口了,就可以直接调用接口删除你的用户,或者添加你的用户。这样对你来说,是不是很危险。

我的想法是,通过阿里云安全组设置指定的ip地址能够访问此端口,来避免用户直接请求服务端。而这样,只有前后端分离才可实现。如下图所示(流程图)


2.操作实例

2.1在阿里云上开通安全组

解释:

红色的为8088端口,授权对象为0.0.0.0/0,他的意思是允许任何ip访问

绿色的为8089端口,授权对象为服务端的特定ip,他的意思是只允许特定ip访问(我的前端服务就部署在这个特定的ip上)

2.2创建springBoot【前端】项目

(1) 设置配置文件:端口为8088

(2) 在static下创建个index.html内容如下

注意其中 :xmlhttp.open("GET","http://你的服务端ip:8089/hello",true);改成自己服务端的ip

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
    <script>
        function loadXMLDoc()
        {
            var xmlhttp;
            if (window.XMLHttpRequest)
            {
                //  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
                xmlhttp=new XMLHttpRequest();
            }

            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    alert("请求成功,结果为"+xmlhttp.responseText);
                }
                if(xmlhttp.readyState==4 && xmlhttp.status!=200){//因为状态码为4的时候才代表响应已完成,此时不为200代表有问题,200代表访问正常
                    alert("请求失败,错误状态码为"+xmlhttp.status);
                }
            }
            xmlhttp.open("GET","http://你的服务端ip:8089/hello",true);//hello是后面服务端写的接口名
            xmlhttp.send();
        }
    </script>
</head>
<body>
<button onclick="loadXMLDoc()">点我,向服务端发送数据!</button>
</body>
</html>

2.3创建springBoot【后端】项目

(1) 修改端口号为8089

 (2)在DemoApplication类中添加如下内容


2.4部署

将2个项目打成jar包,上传至服务端,进行运行


3. 测试

假设:1.通过ip地址直接访问接口,如果【能够返回】,那么代表失败

        2.通过访问前端,如果在调用结果,如果【不能返回】,则代表失败

        两种情况都没失败,代表成功。

 1.第一种情况通过

 2.第二种情况失败

查看日志发现,还是由浏览器请求的这个端口,而不是服务器请求的这个端口。

 

那这就相当于浏览器转发,没有意义。

于是我就有了个新想法,那如果用户请求前端,我让前端在去请求自己的服务端,再由前端的服务端去请求另一个服务端呢。

大致流程如下图:

 那这样,用户通过post请求调用这个接口,还不是可以做到了吗。所以说暂时没有找到好的方法

猜你喜欢

转载自blog.csdn.net/qq_38403590/article/details/120282079