0

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

第一个问题:

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

第二个问题:

facebook 用户 ID 与正常帐户的用户 ID 重叠的可能性是否很大uniquid(rand(), true)

第三个问题:

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

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

4

1 回答 1

1

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。

普通用户被限制在他们的用户名前加上httphttpspassword留空。并userdata存储由 3rd 方身份验证服务提供的 JSON 或 XML。

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

据我所知,没有必要对您的 App ID 保密。需要隐藏的是您的“应用程序秘密”。

于 2013-09-10T18:27:06.077 回答