我正在用sqlite和zumero构建一个移动应用程序。
我注册了托管服务器,并阅读了有关auth数据库和ACL的zumero文档。据我所知,有一个身份验证数据库,里面有用户和加密的密码,默认情况下,服务器被配置为不允许将该数据库同步到本地设备。
我想在我的应用程序中显示一个用户列表。似乎我可以更改ACL,以便可以将auth数据库下拉到设备上,但这似乎是一个坏主意。在不影响安全性的情况下,将用户数据下载到设备上的推荐方法是什么?
发布于 2013-05-08 04:46:10
首先,让我们指出,如果您愿意,您可以启用auth db的同步。
Zumero内部身份验证数据库中的密码使用bcrypt进行加密。如果你把auth db下载到移动设备上,你确实会带来安全风险,因为现在有人可以破解东西,获得加密的密码,并试图解密它们。但额外的风险并不是很大。密码仍然是加密的。
要拉取内部auth dbfile,需要做两件事:
选择zumero_internal_auth_create( server_url,dbfile,credentials_scheme,credentials_username,credentials_password,first_username,first_password,allow_add_scheme,allow_add_who,);
SELECT zumero_internal_auth_set_acl_entry( server_url,dbfile,credentials_scheme,credentials_user,credentials_password,scheme,who,tbl,zumero_named_constant('acl_op_pull'),zumero_named_constant('acl_result_allow'),);
请注意,您可以限制允许拉取的用户。还要注意的是,授予拉取身份验证数据库的能力并不会授予以其他方式修改它的任何能力。
好了,回到问题上:
另一种选择是有两个内部身份验证数据库,一个有密码,另一个只有别名。现在,您可以在具有别名的应用程序上启用同步,从而允许您的移动应用程序拥有用户列表,而无需访问密码。
破解一个bcrypt字符串是很难的,但如果你没有这个字符串,那就更难了。:-)
要以这种方式设置,您需要使用zumero_internal_auth_create()创建两个身份验证数据库。而且每次添加用户时,都需要添加两次。一次是在密码db中使用zumero_internal_auth_add_user(),一次是在别名db中使用zumero_internal_auth_add_alias()。
SELECT zumero_internal_auth_create(
server_url,
'passwords',
credentials_scheme,
credentials_username,
credentials_password,
first_username,
first_password,
zumero_internal_auth_scheme('zumero_users_admin'),
zumero_named_constant('acl_who_any_authenticated_user'),
zumero_internal_auth_scheme('zumero_users_admin'),
zumero_named_constant('acl_who_any_authenticated_user')
);
SELECT zumero_internal_auth_create(
server_url,
'aliases',
credentials_scheme,
credentials_username,
credentials_password,
first_username,
first_password,
zumero_internal_auth_scheme('zumero_users_admin'),
zumero_named_constant('acl_who_any_authenticated_user'),
zumero_internal_auth_scheme('zumero_users_admin'),
zumero_named_constant('acl_who_any_authenticated_user')
);
SELECT zumero_internal_auth_set_acl_entry(
server_url,
'aliases',
credentials_scheme,
credentials_user,
credentials_password,
scheme,
who,
tbl,
zumero_named_constant('acl_op_pull'),
zumero_named_constant('acl_result_allow'),
);
SELECT zumero_internal_auth_add_user(
server_url,
'passwords',
credentials_scheme,
credentials_username,
credentials_password,
'gandalf',
'thegrey'
);
SELECT zumero_internal_auth_add_alias(
server_url,
'aliases',
credentials_scheme,
credentials_username,
credentials_password,
'gandalf',
'passwords',
'gandalf'
);https://stackoverflow.com/questions/16427102
复制相似问题