如何使用安全规则来防止用户伪造Firebase.ServerValue.TIMESTAMP
How do you use security rules to prevent a user from faking Firebase.ServerValue.TIMESTAMP?
我的应用需要一个可靠的时间戳值来创建新记录。我使用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
如何防止滥用用户制作一个看起来有效的请求,但实际上是过去或未来的假时间戳?下面是他们可能使用的代码:
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}
相关文章:
- 从远程脚本获取用户IP
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- d3基于用户选择动态更新节点
- 同步调用,直到用户通过angular验证为访问者
- 使用javascript搜索具有用户输入的数组
- 如何使用jquery确定用户是否年满18岁
- Meteor-添加用户自定义字段的方法不起作用
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- 跟踪用户点击Adsense广告的IP地址
- 使用javascript反复检查用户在facebook上的登录状态
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 如何检查用户在html5视频播放器中观看了完整的视频
- 一个密码测试程序,如果存在空格,它会提醒用户
- 如何使用JavaScript中的用户输入创建序列/序列
- 当用户按下回车键时,自动在text区域/text中插入消息
- 显示某个用户ID的某个标签的30张Instagram图片
- 将当前用户的 ID 推送到 meteorjs 中集合/文档的内部数组
- javascript跨浏览器确定用户是否滚动到页面底部
- 如何阻止用户伪造请求?或者如何检测虚假请求
- 如何使用安全规则来防止用户伪造Firebase.ServerValue.TIMESTAMP