gpt4 book ai didi

javascript - 您如何使用安全规则来防止用户伪造 Firebase.ServerValue.TIMESTAMP?

转载 作者:搜寻专家 更新时间:2023-11-01 04:57:03 27 4
gpt4 key购买 nike

我的应用需要可靠的时间戳值来创建新记录。我正在使用 Firebase.ServerValue.TIMESTAMP 来确保这一点。这是我的代码:

var ref = new Firebase("https://test-firebase-please-ignore.firebaseio.com/foo");
ref.set(Firebase.ServerValue.TIMESTAMP);

或在 REST 中:

$ curl -X PUT -d '{"foo":{".sv":"timestamp"}}' \
https://test-firebase-please-ignore.firebaseio.com/.json

如何防止滥用用户制作看似有效但实际上是过去或 future 的虚假时间戳的请求?这是他们可能使用的代码:

var ref = new Firebase("https://test-firebase-please-ignore.firebaseio.com/foo);
ref.set(1408643272324); //A timestamp in the past

最佳答案

您可以使用 .validate 强制执行此操作规则和 now内置变量。

这是执行此操作的安全规则:

{
"rules": {
".read": true,
".write": true,
"foo" : {
".validate": "newData.val() == now"
}
}
}

您可以使用带有这些 cURL 命令的 REST API 来验证它。首先是负面案例:

$ curl -X PUT -d '{"foo":"1408638610143"}' \
https://test-firebase-please-ignore.firebaseio.com/.json

{
"error" : "Permission denied"
}

然后是一个积极的案例:

$  curl -X PUT -d '{"foo":{".sv":"timestamp"}}' \
https://test-firebase-please-ignore.firebaseio.com/.json

{"foo":1408638609500}

关于javascript - 您如何使用安全规则来防止用户伪造 Firebase.ServerValue.TIMESTAMP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25433016/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com