解析用户对象ACL

2024-01-09

我是解析新手,对解析用户“表”中数据的安全性有疑问。我想将附加数据与用户数据一起存储。例如,电话号码。但默认情况下,解析将用户表设置为任何人都具有读取权限。因此,如果有人点击我的解析 api,他们将能够获得所有用户及其电话号码的列表。显然这不是很安全。那么我应该设置用户对象以便任何人都无法读取它们吗?或者我应该将我的详细信息存储在不同的表中?相关的是,我还认为对于任何人来说都能够基本上转储我的所有用户默认列也是很奇怪的。现在,任何拥有我的 API 密钥的人都可以获取所有用户及其电子邮件地址。我是否遗漏了一些关于这是多么不安全的事情?


你的担忧是非常有道理的。 Parse数据库的默认权限配置方便发展,因此无需进一步配置,任何人都可以轻松转储所有用户。不幸的是,当不同的默认值会立即使许多应用程序更加安全时,真正的安全性需要相当大的努力。

请参阅此博客文章,了解用户转储有多么容易的示例:https://www.webniraj.com/2013/08/01/using-the-parse-javascript-sdk-be-careful/ https://www.webniraj.com/2013/08/01/using-the-parse-javascript-sdk-be-careful/

每个对象的 ACL 无法提供已被类级别权限拒绝的访问权限,因此即使您不想要任何可公开访问的用户数据,也需要以以下方式配置 Parse User 类的公共类级别权限:允许 SDK 与它们交互:

  • 客户端需要公共“Get”才能刷新当前用户。
  • 需要公共“创建”才能注册用户。
  • 需要公开“更新”才能设置用户名和密码。

然后,使用用户 ACL 进一步限制这些公共权限。内置 User 类分配有一个默认 ACL,具有公共读取和私有读写(针对特定用户)。我不需要为用户提供公共 Read 读取,因此在 afterSave Cloud Code 挂钩中,我将 ACL 更改为私有读写。实际上,我什至不需要私有写入访问权限,因为我打算使用 Cloud Code 进行用户更新,但 ACL 始终返回私有读写权限。

我不需要搜索其他用户的能力,因此我禁用了公共“查找”,这是防止转储所有用户信息的快速修复方法。虽然风险较小,并且需要特定的对象 ID,但公共“Get”仍然可能被滥用,这就是我从用户 ACL 中删除公共读取的原因。

UPDATE:

配置类级别权限 (CLP) 以公开允许操作并不一定意味着任何数据都可以公开访问。这些 CLP 指定可以从任何客户端 SDK 在数据库的每个类上运行哪些操作(这就是“公共”的含义 - 使用“私有”主密钥仍然可以覆盖所有内容)。然后,每个对象上的 ACL 指定哪些操作允许用户/角色读取和写入该对象。我强烈建议您阅读他们关于安全性的 5 部分博客文章,以了解 CLP 和对象级 ACL 之间的交互:解析博客:安全性 http://blog.parse.com/learn/engineering/parse-security-i-are-you-the-key-master/

CLP 允许您锁定客户端对数据库中整个类的访问。例如,我有一个仅由云代码使用的类,因此我禁用了所有 CLP(防止任何客户端 SDK 读取或写入这些对象),然后云代码使用主密钥覆盖 CLP 以在服务器上使用。我也有面向客户的,但对象是用户私有的。这些具有公共 Get 和 Find CLP,但通过仅针对该用户的私有读写 ACL 来保护该用户。

Parse 最近还添加了“指针权限”,这看起来有助于限制对每个对象“所有者”的访问,但我个人没有使用过这些:解析指针权限 https://parse.com/docs/ios/guide#security-pointer-permissions

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解析用户对象ACL 的相关文章

随机推荐

  • 将颜色声明为常量

    我怎样才能申报Color输入为const像这样 private const Color MyLovedColor Color Blue 这不起作用 因为 Color Blue 是静态的而不是常量 只读对我没有帮助 因为我需要仅 支持 常量的
  • 纬度返回 0,0

    我正在尝试创建一个显示我当前位置的应用程序 我拥有所有必要的许可 我有另一个类名称 GPS 跟踪器来获取我的 GPS 位置 这是我的代码 GPSTracker gpsTracker new GPSTracker this LocationM
  • Nexus 7 上的 Android 4.2:canvas.drawText() 无法正常工作

    我的应用程序面临严重问题 该应用程序发布在 Google Play 上 并且显然在除 gt 4 0 之外的所有 Android 版本上都运行良好 这是我的 Android 4 0 HTC 手机的屏幕截图 这是我在 Nexus 7 Andro
  • 在 Sweetalert 上显示成功消息通知

    我想显示使用 Sweetalert 成功删除数据的消息以及脚本的开头 a href class delete link Delete a JavaScript jQuery document ready function delete li
  • 创建自定义大通知

    我想创建一个包含一些控件的通知 由于文本和控件在默认通知大小 64dp 下都很小 因此我希望它比默认大小更大 可以创建更大的通知 我认为也可以有自定义布局 但我不知道如何 To be more specific the following
  • Clojurescript:错误:无法找到或加载主类 clojure.main

    我按照它安装了 Clojurescript快速入门指南 https github com clojure clojurescript wiki Quick Start 我将 git 存储库拉到 clojurescript CLOJURESC
  • SwiftUI @State var 初始化问题

    我想初始化 a 的值 StateSwiftUI 中的 var 通过init 的方法Struct 因此它可以从准备好的字典中获取正确的文本 以便在 TextField 中进行操作 源代码如下所示 struct StateFromOutside
  • $_GET 。未定义的变量。找不到解决方案[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我遇到了问题并且没有想法 我试图从 URL 获取参数 但 PHP 坚持说该变量未定义 网址是 http localhost tre
  • Twitter Bootstrap 中的响应式表处理

    当表格的宽度超过跨度的宽度时 就像这个页面 http jsfiddle net rcHdC http jsfiddle net rcHdC 您将看到表格的内容超出了span 解决这种情况的最佳方法是什么 引导程序3 http blog ge
  • 如何在 AngularJS 指令中的元素上绑定滚动事件

    如何在 AngularJS 指令中的元素上绑定滚动事件 我在 window 上绑定滚动 但现在我需要将其更改为此类 body wrapper angular element document queryselector body wrapp
  • 如何将 pandas 数据框逐行写入 CSV 文件,一次一行?

    我有一个大约 100 万个地址的列表 以及一个查找它们的纬度和经度的函数 由于某些记录的格式不正确 或出于任何原因 有时该函数无法返回某些地址的纬度和经度 这将导致 for 循环中断 因此 对于成功检索到纬度和经度的每个地址 我想将其写入输
  • firebase db:具有 Kotlin 委托属性的模型

    我正在使用 Kotlin 对象来处理我的 Firebase 数据库模型 如上所述在指南中 https firebase google com docs database android read and write basic write
  • 使用 JavaScript 滚动页面

    我在用着Ender js http ender no de 我试图让页面滚动到特定位置 我认为我在这里做错了什么 但页面甚至没有移动 理想情况下 我希望使用动画事件 但 emile 不接受scrollTop 作为参数 任何帮助表示赞赏 do
  • UICollectionView indexPathsForVisibleItems 不更新新的可见单元格

    我有一个 ViewController 里面有一个 CollectionView 加载视图时 可见单元格 9 个单元格 会正确显示 当我向下滚动时 我想通过调用partnerCollectionView的indexPathsForVisib
  • 使用 DecelerationEnded 会干扰其他回调

    我正在尝试使用减速结束与 一起回调Tapped MT Dialog 元素上的回调 我无法让两者同时工作 当 DecelerationEnded 回调被注释掉时 点击 回调将起作用 当它被注释时 tapped 回调将不再被触发 而 Decel
  • 如何在spark中设置驱动程序的python版本?

    我正在使用 Spark 1 4 0 rc2 因此我可以将 python 3 与 Spark 一起使用 如果我添加export PYSPARK PYTHON python3 to my bashrc文件中 我可以与 python 3 交互运行
  • 清除 Laravel 的 orderBy

    我有一个通用函数 它为我提供通用查询集 例如 class Model extends Eloquent public static function get queryset queryset self where foo bar Do t
  • wxPython:wx.PyControl可以包含wx.Sizer吗?

    Can a wx PyControl包含一个wx Sizer 请注意 我最终想要在这里做的事情 具有浮点值的旋转器 已经在另一个问题中得到了回答 我对在 a 中布局小部件特别感兴趣wx PyControl如果我需要制作自己的自定义小部件 这
  • 上传文件时发生 Curl 错误“创建表单数据失败”

    当我尝试使用 php 和curl 上传文件时 出现错误 创建表单数据失败 我知道当文件路径不正确时会发生错误 test php postcontent files test jpg test php 和 test jpg 在同一文件夹中 但
  • 解析用户对象ACL

    我是解析新手 对解析用户 表 中数据的安全性有疑问 我想将附加数据与用户数据一起存储 例如 电话号码 但默认情况下 解析将用户表设置为任何人都具有读取权限 因此 如果有人点击我的解析 api 他们将能够获得所有用户及其电话号码的列表 显然这