如何屏蔽脚本标记中的唯一属性

时间:2019-04-11 15:55:15

标签: node.js proxy

我有一个远程聊天脚本文件,该文件在script标签中传递了唯一的令牌。这种方法的一个问题是,任何人都可以使用具有我独特参数的脚本标签来访问我不想要的聊天。如何屏蔽这些ID,以使它们在客户端不可见。

<script src="https://www.website.com/chat.js" channelId="8adf8b3" token="12345"></script>

我试图创建一个获取请求的Node代理,但是我不确定如何捕获该属性值并将其转发到URL。此代码还会显示HTTP 403错误。

const proxy = httpProxy.createProxyServer({ proxyOptions });
app.get('/*', cors(corsOptions), (req, res) => {
    const targetUrl = config.proxyForwardingUrl + req.url;
    console.log(targetUrl);
    proxy.web(req, res, { target: targetUrl });
});

代理服务器是最好的方法,还是有另一种方法可以完成我所寻找的?

1 个答案:

答案 0 :(得分:0)

通常使用过期的令牌完成此操作。一个很好的例子是jwt令牌。这些令牌是通过私钥签名的,因此,如果服务器不知道,则用户无法更改/操作。

Jwt令牌包含时间戳记,该时间戳记将在何时过期,并且服务器知道何时关闭Web套接字和/或使用过期的令牌拒绝来自客户端的任何请求。

流量通常是:

  1. 客户端登录网页并接收令牌
  2. 使用令牌将令牌连接到不同的资源
  3. 当令牌即将到期时,它会要求提供新令牌,然后转到步骤
  4. 未发行令牌时,服务器开始关闭所有资源

这是您可以保护自己免遭泄露的机密的方法,即使以为反派获得了令牌,他也将无法使用该资源或只能使用很短的时间。

通常,聊天/流的令牌寿命不到一分钟。

Here,您可以了解有关JWT的更多信息。

是否可以从客户端隐藏此JWT令牌以使其看不到或获取它?

我不知道执行此操作的任何方法。一种可以做的就是obfuscate,但仍然可以解码。与JWT令牌相比,它们不太可能被破解,因为它们是用RSA密钥签名的,该密钥安全并且可以在整个Internet上使用。

相关问题