reactjs - 在不通过 API 服务器的情况下从客户端访问 Elasticseach 是否安全?
问题描述
例如,假设您在 Vue.js 或 React.js 中嵌入了以下 Javascript 代码。
var elasticsearch = require ('elasticsearch');
var esclient = new elasticsearch.Client ({
host: 'Elasticsearch host name of Elascticsearch Cloud's(URL?')
});
esclient.search ({
index: 'your index',
body: {
query: {
match: {message: 'search keyword'}
},
aggs: {
your_states: {
terms: {
field: 'your field',
size: 10
}
}
}
}
}
).then (function (response) {
var hits = response.hits.hits;
}
);
针对stackoverflow这样的应用程序的搜索引擎,如果使用Elasticseach的云的ROLE设置,只要GET from public就可以了,虽然我没有准备API服务器,但我认为可以实现同样的事情使用上面的客户端代码,这是一个安全问题吗?(比如主机名落在客户端是否有危险)
如果没有问题,搜索引擎响应会更快,实施成本也会降低,我想为什么很多人不这样做。(因为这样的示例代码在网上看不到太多)
谢谢你。
解决方案
这不是一个好主意。
如果有一点编程知识的客户找到我们的 ElasticSearch IP 地址,你就完蛋了,他基本上可以在你不注意的情况下删除所有数据。
我对 XPack 安全性一无所知,但如果你不使用它,你绝对被迫将 ES 隐藏在 API 后面。
然后,您还必须保护您的 ES 域,以仅允许从 API 服务器访问并阻止世界其他地方。
推荐阅读
- android - 使用此 map.setMyLocationEnabled(true); 时总是出错 它不工作
- ionic3 - 添加背景地理定位插件后,Ionic 3 空白应用程序无法构建到 Android
- git - Git LFS 不一致?
- java - 如何在 Maven 中从命令提示符传递 aws 环境变量
- android - Android-Firebase 身份验证令牌重置
- mysql - 无法使用 NodeJS 对 MySQL 事务使用 async/await
- java - 如何为 Hazelcast 中的所有自定义类型配置自定义序列化程序
- c# - 无法将在端口上运行的 SignalR 客户端连接到 .NET Core 2.2 服务器
- octopus-deploy - 从项目库集中下载 Octopus 变量
- c# - System.TypeLoadException:无法使用令牌 010000a4 解析类型