网页源代码检查时隐藏 WebSocket 的后端地址

背景

近期在自研如何通过 OpenAI 实现 与ChatGPT 官网一样的聊天对话效果。
用到了 html5+websocket+python 三项技术 , 于是用一天时间自学了一下这方面技术。 当实现了功能之后,就得考虑安全问题:
在用 html5 实现与 websocket 通讯时,如何保证网页源代码检查时看不到 ws 的后端地址? 进而保证安全?

先给大家显摆一下我的成果(雏形),哈哈~
一个 html 文件+一个 python 文件搞定的与 chatgpt 对话。
在这里插入图片描述

为了在网页源代码检查时隐藏 WebSocket 的后端地址,您可以采用以下方法:

方法一:使用 JavaScript 动态生成 WebSocket 连接地址

在 HTML 页面中,不要直接写入 WebSocket 连接地址。而是通过 JavaScript 动态生成 WebSocket 连接地址。这样,当用户查看网页源代码时,将无法直接看到 WebSocket 的后端地址。

例如:

<!DOCTYPE html>
<html>
<head>
  <title>WebSocket Example</title>
  <script>
    function setupWebSocket() {
      // 动态生成 WebSocket 连接地址
      var wsUrl = "wss://" + window.location.hostname + "/websocket";
      var websocket = new WebSocket(wsUrl);

      websocket.onopen = function(event) {
        console.log("WebSocket 连接已打开");
      };

      websocket.onmessage = function(event) {
        console.log("收到消息: " + event.data);
      };

      websocket.onclose = function(event) {
        console.log("WebSocket 连接已关闭");
      };
    }
  </script>
</head>
<body onload="setupWebSocket()">
  <h1>WebSocket Example</h1>
</body>
</html>

方法二:使用后端代码生成 WebSocket 连接地址

在后端代码中生成 WebSocket 连接地址,并将其传递给前端。这样,当用户查看网页源代码时,将无法直接看到 WebSocket 的后端地址。

例如,在 Python 的 Flask 框架中,可以这样做:

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def index():
    ws_url = "wss://" + request.host + "/websocket"
    return render_template("index.html", ws_url=ws_url)

if __name__ == "__main__":
    app.run()

然后,在 HTML 模板中使用传递的 ws_url 变量:

<!DOCTYPE html>
<html>
<head>
  <title>WebSocket Example</title>
  <script>
    function setupWebSocket() {
      var websocket = new WebSocket("{{ ws_url }}");

      websocket.onopen = function(event) {
        console.log("WebSocket 连接已打开");
      };

      websocket.onmessage = function(event) {
        console.log("收到消息: " + event.data);
      };

      websocket.onclose = function(event) {
        console.log("WebSocket 连接已关闭");
      };
    }
  </script>
</head>
<body onload="setupWebSocket()">
  <h1>WebSocket Example</h1>
</body>
</html>

需要注意的是,虽然这些方法可以在一定程度上保护 WebSocket 连接地址,但无法完全阻止有恶意意图的用户找到 WebSocket 地址。因此,建议您在后端实现一定的安全措施,例如验证用户身份、限制连接速率等,以确保 WebSocket 通信的安全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

领航猿1号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值