我正在用Firebase和Angular5构建一个web应用程序。我想创建/加入私人房间(受密码保护)。
目前,我正处于数据库设计阶段,无法真正了解如何在不从firebase数据库中实际检索的情况下检查用户输入的正确房间密码(从而使其完全不安全)。
我应该为此使用云功能吗。或者直接用firebase就可以了,而我错过了什么?
一种不需要服务器的方法是将密码嵌入房间的路径中。例如:如果您有一个房间“general”和密码“correcthorsebatterystaple”,那么您可以将其建模为:
messages
general_correcthorsebatterystaple
roomnames
general
并通过以下方式确保其安全:
{
rules: {
messages: {
"$roomid": {
".read": true
}
"roomnames: {
".read": true
}
}
}
根据这些规则,任何人都可以阅读房间名称列表。但是,只有知道房间名称的密码,你才能阅读房间的信息。
你可以在firebase中完成。
假设数据库的一部分布局如下:
######################################################################################################
聊天室所有者被授予对/chatRooms/$roomID/password
的读/写权限。
要成为聊天室的成员,您必须将文档添加到:chattrooms/$roomId/users/$userId
,并进行以下验证:
条目的userId必须是当前用户,密码字段必须等于密码。验证规则可以访问数据库中的任何html" target="_blank">数据,即使用户无法访问数据。
下面是一个(未经测试的)例子,它将展示基本原理。
总之:
代码:
"chatrooms" : {
"$room_id" : {
"chat data" : {
".read" : "root.child('/chattrooms/' + $room_id + '/members/' + auth.uid).exists()"
},
"password": {
".read": "false",
".write": "root.child('/chattrooms/' + $room_id).child('admin').val() == auth.uid"
},
"members" : {
"$user_id" : {
".validate": "$user_id == auth.uid && newData.val() == root.child('/chattrooms/' + $room_id + '/password').val()"
}
}
}
}
存储密码 用户名和密码组合必须存储在某处。以下列表提到了一些受欢迎的地方: 文字:你现在应该熟悉这种方法。 SQL数据库:FreeRADIUS包含与SQL数据库交互的模块。 MySQL非常受欢迎,并且广泛用于FreeRADIUS。 目录:Microsof的Actve目录或Novell的电子目录是典型的企业级目录。OpenLDAP是一种流行的开源替代方案。 FreeRADIUS可以使用的用户文件和S
过去一段时间以来, 许多的网站遭遇用户密码数据泄露事件, 这其中包括顶级的互联网企业–Linkedin, 国内诸如CSDN,该事件横扫整个国内互联网,随后又爆出多玩游戏800万用户资料被泄露,另有传言人人网、开心网、天涯社区、世纪佳缘、百合网等社区都有可能成为黑客下一个目标。层出不穷的类似事件给用户的网上生活造成巨大的影响,人人自危,因为人们往往习惯在不同网站使用相同的密码,所以一家“暴库”,全部
使用 phpass 库来哈希和比较密码 经 phpass 0.3 测试,在存入数据库之前进行哈希保护用户密码的标准方式。 许多常用的哈希算法如 md5,甚至是 sha1 对于密码存储都是不安全的, 因为骇客能够使用那些算法轻而易举地破解密码。 对密码进行哈希最安全的方法是使用 bcrypt 算法。开源的 phpass 库以一个易于使用的类来提供该功能。 示例 <?php // Include ph
我正在使用Node编写一个交易应用程序 有问题的经纪账户有一个REST API,您可以在其中发布该系统的登录名和密码。该API不提供SSO或OAuth作为身份验证选项。身份验证的唯一方法是发布uid和密码。 所以这里涉及到两个登录:一个是我的应用程序,另一个是完全独立的经纪账户登录。每个登录都使用不同的用户ID和密码。 我遇到的问题是如何存储经纪账户的密码。我知道存储密码是个坏主意。但是,如果我存
我们正在使用firebase实时数据库,我正在考虑在本地实现一个缓存来减少重复调用。
问题内容: 我看到的每个示例都说要使用强密码,但是他们只是在源代码中添加了密码。在我看来,这似乎不太正确。 是否可以作为当前帐户向密钥库进行身份验证,因此不涉及密码? 如果不可能,我有一个要求,就是不要将密码存储在源代码中,这是完全可以接受的,但是似乎在某些时候密码需要成为方程式的一部分,有人可以指出我最安全的方式来进行加密吗?处理这个(事情? 我很想在构建过程中添加密码,但是然后我在构建服务器上