【发布时间】:2021-07-04 05:08:27
【问题描述】:
我正在运行一个简单的 Web 应用程序,我在其中直接从我的 javascript 连接到 elasticsearch。取回结果并将其显示在前面。到目前为止一切顺利。
问题是可以在页面源中查看凭据,这意味着任何人都可以像我一样获取它们并向弹性发送请求。
我不想代理我的请求我知道这是一种常见的方式,但我希望我的搜索速度超级快并且没有中间人。
ReactJS 可以安全地连接到弹性集群吗?
【问题讨论】:
-
您只想从源代码中隐藏令牌还是要同时对用户进行身份验证?
-
我想隐藏它。
-
您当然可以让用户从服务器获取令牌,但是如果您没有身份验证机制,任何人都可以访问您的页面,获取令牌并仍然使用该令牌向您的弹性搜索集群发出请求。您还可以通过设置 CORS 策略仅允许来自某些域的请求,但这仍然可以使用忽略该策略的客户端绕过。您还可以不时轮换令牌。尽管如此,如果您没有对用户进行身份验证,任何具有技术知识的人都可以使用该令牌向您的集群发出经过身份验证的请求。
-
通常你不会直接从你的 react 应用程序中与你的弹性搜索对话,但有例如公开 API 并在内部与您的弹性搜索对话的网络服务器。如果您直接公开服务和令牌,则无法阻止任何人使用它。如果您想将开销降至最低,您可以在同一台机器/同一数据中心中托管弹性搜索以及 Web 服务器。增加的往返时间(可能是几毫秒)不会被人类察觉。
标签: reactjs elasticsearch proxy jwt token