Facebook用户信息存储在数据库中


facebook user info storing in database

我的网站为用户提供创建帐户并使用Facebook登录。用户表包含:userId(如果用户创建自己的帐户,则generated by $userId = uniqid(rand(), true;)。密码,盐,电子邮件,加入日期。

第一个问题:

我不确定我在Facebook上做的事情是否安全。现在我正在从Facebook获取用户ID,并使用xmlhttpRequest对象将其发送到服务器。然后服务器将其存储在用户 ID 下,并将其他列留空。

第二个问题:

脸书用户ID与uniquid(rand(), true)生成的普通帐户的用户ID重叠的可能性是否很大

第三个问题:

使用客户端登录是否安全?我的意思是,即使是我的应用程序ID也会被用户看到。

第四个问题:为了判断该条目是Facebook帐户还是普通帐户,我是否应该在数据库中添加另一列,true=facebook帐户,false=普通帐户。还是我应该检查某个帐户的密码列是否为空?

以 thepointless.com 为例,每个用户都会获得一个自动递增的ID,包括Facebook用户。外部认证服务由username识别,其中包含"非常规"用户的URL:

+----------+------------------+------+-----+-------------------+----------------+
| Field    | Type             | Null | Key | Default           | Extra          |
+----------+------------------+------+-----+-------------------+----------------+
| user_id  | int(10) unsigned | NO   | PRI | NULL              | auto_increment |
| username | varchar(255)     | YES  | UNI | NULL              |                |
| password | varchar(255)     | YES  |     | NULL              |                |
| created  | timestamp        | NO   |     | CURRENT_TIMESTAMP |                |
| userdata | mediumtext       | YES  |     | NULL              |                |
| admin    | tinyint(1)       | YES  |     | 0                 |                |
| name     | varchar(765)     | YES  |     | NULL              |                |
+----------+------------------+------+-----+-------------------+----------------+

Facebook用户的用户名是其图形数据的URL,例如http://graph.facebook.com/8643372。在您的系统中,没有必要指向真实的东西,只要它标识域和外部[唯一] ID。在这种情况下,用户的公共图形对象是一个简短的、可预测的 URL。

普通用户不得在其用户名前面加上 httphttps 前缀。password留空。userdata存储第三方身份验证服务提供的 JSON 或 XML。

服务器端逻辑通常不应信任完全客户端登录。但是,对 JavaScript 发起的登录进行服务器端验证通常并不困难。而且没有理由不信任,至少在初步的基础上,客户端完全是客户端身份验证。

据我所知,没有必要对你的应用程序ID保密。这是需要隐藏的"应用机密"。