adb*_*dbo 2 firebase firebase-security google-cloud-firestore
是否可以知道对云 Firestore 文档的传入请求来源的主机名?我想写一个表单的数据库规则allow write: if request.resource.data.source_host_name == some_predefined_value。这是一个 Web 应用程序,因此我试图找到一种好方法来限制谁可以在不使用传统身份验证方法的情况下写入我的数据库。
这是我在与 Firestore 交互时记录客户端 IP 地址的解决方案。我同意 Doug 的观点,即这不能防止 IP 欺骗。尽管如此,它对我的目的还是有帮助的。
诀窍是使用 Cloud Functions 创建中间 API 端点,然后与 Firestore 进行交互。以下是 Google Cloud 函数的示例。
const admin = require("firebase-admin");
const functions = require("firebase-functions");
admin.initializeApp();
exports.yourEndpoint = functions.https.onRequest(req, (res) => {
// Get the IP address from the headers in the request object
const ipAddress = getIPAddress(req);
// Do whatever you need in your firestore DB with ipAddress
admin.firestore().collection('ipAddresses').add({address: ipAddress})
.then((writeResult) => {
return res.status(200).send();
})
.catch((error) => {
return res.status(500).send();
});
});
// Helper function to extract the IP address from request headers
function getIPAddress(req) {
return (
req.headers["fastly-client-ip"] ||
req.headers["x-forwarded-for"] ||
req.headers["No IP, probably because we are in development mode"]
);
}
Run Code Online (Sandbox Code Playgroud)
注意:在开发模式下您不会获得 IP 地址,因为 Firebase 模拟器不会创建正确的标头。
| 归档时间: |
|
| 查看次数: |
1100 次 |
| 最近记录: |