Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何攻击Firebase数据库规则?_Ios_Firebase_Security_Websocket_Sniffing - Fatal编程技术网

Ios 如何攻击Firebase数据库规则?

Ios 如何攻击Firebase数据库规则?,ios,firebase,security,websocket,sniffing,Ios,Firebase,Security,Websocket,Sniffing,我正在为iOS应用程序与Firebase合作。我试图理解我的规则需要有多严格,所以我试图自己攻击它们。我的想法是,如果我能找到规避真正宽松的规则的方法(比如允许.read和.write,或者只需要授权),我可以根据需要构建更多的规则 我对我的凭据的安全性相当有信心,因此攻击者必须使用代理嗅探流量,并以某种方式使用其授权令牌对Firebase数据库进行自己的调用。用户可以使用什么方法获取他们的授权令牌(通过嗅探代理流量或其他方式)来对数据库进行自己的调用?iOS上的Firebase SDK似乎使用

我正在为iOS应用程序与Firebase合作。我试图理解我的规则需要有多严格,所以我试图自己攻击它们。我的想法是,如果我能找到规避真正宽松的规则的方法(比如允许.read和.write,或者只需要授权),我可以根据需要构建更多的规则

我对我的凭据的安全性相当有信心,因此攻击者必须使用代理嗅探流量,并以某种方式使用其授权令牌对Firebase数据库进行自己的调用。用户可以使用什么方法获取他们的授权令牌(通过嗅探代理流量或其他方式)来对数据库进行自己的调用?iOS上的Firebase SDK似乎使用websocket,而用于嗅探web流量的工具(如Charles Proxy)似乎不容易支持iOS上的websocket嗅探,所以我的应用程序中没有任何数据库规则,我应该保持清醒吗


简言之,有没有办法让我扮演一个坏角色,通过劫持我的Firebase授权令牌来攻击我自己的数据库?如果没有,我真的需要担心数据库规则吗?

您可能(有点)没有抓住要点

安全规则可用于限制特定用户可以执行的操作。您不关心该使用是否获得合法凭据用户可以通过多种方式向攻击者放弃其凭据,对此您无能为力,因此不要努力阻止这种情况发生。如果您担心嗅探或网络钓鱼,只需知道它已超出您的控制范围,如果用户的设备被泄露,它可以放弃所有私人信息。只需确保每个用户只能做您允许的事情,而不考虑其他任何事情


除了按用户规则之外,您应该只关心未经身份验证的用户在数据库中可以做什么。如果您允许任何未经验证的读取或写入,您需要仔细考虑并仔细编写规则。理想情况下,除非在非常受控的情况下,否则不允许公共写入。

您可能(有点)忽略了要点

安全规则可用于限制特定用户可以执行的操作。您不关心该使用是否获得合法凭据用户可以通过多种方式向攻击者放弃其凭据,对此您无能为力,因此不要努力阻止这种情况发生。如果您担心嗅探或网络钓鱼,只需知道它已超出您的控制范围,如果用户的设备被泄露,它可以放弃所有私人信息。只需确保每个用户只能做您允许的事情,而不考虑其他任何事情

除了按用户规则之外,您应该只关心未经身份验证的用户在数据库中可以做什么。如果您允许任何未经验证的读取或写入,您需要仔细考虑并仔细编写规则。理想情况下,除非在非常受控的情况下,否则不允许进行公共写入。

除了上述内容之外,还需要考虑根据对象结构限制用户可以写入数据库的内容

就我个人而言,我使用了简化流程的方法

如果希望用户向其帐户对象写入包含
firstName
emailAddress
的内容,则可以将螺栓标记写入:

type Accounts {
  emailAddress: String,
  firstName: String
}

path /accounts/{uid} is Accounts {
  create() { auth != null && auth.uid == uid; }
  update() { auth != null && auth.uid == uid; }
}
这有助于保持数据干净,并限制用户破坏逻辑。如果他们对其节点具有平面
.write
访问权限,则可以删除数据或创建可能导致问题的非结构化对象。定义模型有助于保护/维护数据库的完整性

除了上面所说的之外,还值得注意的是,根据对象结构限制用户可以写入数据库的内容

就我个人而言,我使用了简化流程的方法

如果希望用户向其帐户对象写入包含
firstName
emailAddress
的内容,则可以将螺栓标记写入:

type Accounts {
  emailAddress: String,
  firstName: String
}

path /accounts/{uid} is Accounts {
  create() { auth != null && auth.uid == uid; }
  update() { auth != null && auth.uid == uid; }
}

这有助于保持数据干净,并限制用户破坏逻辑。如果他们对其节点具有平面
.write
访问权限,则可以删除数据或创建可能导致问题的非结构化对象。定义模型有助于保护/维护数据库的完整性

我很欣赏你的帖子,以及背后的原则。尽管如此,我仍在试图更好地理解针对这个特定场景的攻击方法,以评估和传达风险。对于堆栈溢出来说,听起来有点宽泛。如果你想讨论,我可以推荐firebase talk Google group或firebase Reddit吗?谢谢,我可以在那里交叉发布。更具体地说:针对Firebase授权和Firebase SDK在iOS上使用的安全WebSocket存在哪些攻击,这些攻击可以保证添加数据规则作为保护?我感谢您的帖子,以及背后的原则。尽管如此,我仍在试图更好地理解针对这个特定场景的攻击方法,以评估和传达风险。对于堆栈溢出来说,听起来有点宽泛。如果你想讨论,我可以推荐firebase talk Google group或firebase Reddit吗?谢谢,我可以在那里交叉发布。更具体地说:存在哪些针对Firebase授权和Firebase SDK在iOS上使用的安全WebSocket的攻击,这些攻击可以保证添加数据规则作为保护?根据答案,Firebase规则的基本原理与数据包嗅探无关,授权令牌等。可能不清楚的一点是Firebase规则是二进制的。可以访问节点,也可以不访问节点;没有“宽松的规定”。然而,你对lax的定义可能与我的不同。e、 g.如果您需要身份验证,并且只允许喜爱比萨饼的授权用户访问“最佳比萨饼餐厅”节点,则