在仅使用Facebook ID填充的MySql中创建用户表?

时间:2012-08-24 01:33:37

标签: mysql facebook security

我想在MySql中创建一个新的'用户'表的最佳实践和建议,该表不会存储reg用户/传递,但会存储将由Facebook提供给我的Facebook ID。

通常情况下,我会担心随机散乱一切,但是......我还需要这样做吗?如果没有个人信息与他们的Facebook ID相关联,我认为没有理由改变任何事情......

所以,Stack Overflow MySql Geniuses,告诉我最好的方法......

2 个答案:

答案 0 :(得分:4)

  

通常情况下,我会担心随机散乱一切,但是......我还需要这样做吗?如果没有个人信息与他们的Facebook ID相关联,我认为没有理由改变任何事情......

所以你的基本问题是,从隐私保护的角度来看,它是否被认为是“安全的”,使用Facebook用户ID来识别系统中的帐户?

如果您没有将任何其他(个人)信息与之相关联,那么关于获取数据库访问权限的黑客所获得的唯一信息是,“1234567890123已使用他们的用户连接到Youhan的应用程序/网站Facebook帐户。“由你决定,这实际上是多么糟糕。

如果您有任何疑问,可以使用third_party_id Facebook提供的(在Graph API用户对象和FQL用户表中)而不是Facebook用户ID - “包含匿名的字符串,但是用户的唯一标识符。您可以将此标识符与第三方一起使用。“

third_party_id与您的应用程序绑定 - 每个应用程序都会从​​Facebook获取相同用户帐户的第三方ID,因此追踪到实际用户的唯一方法是攻击者实际管理将应用程序的凭据或有效的访问令牌交到他手中。

答案 1 :(得分:3)

你的桌子就像这样:

我将此用于“使用facebook登录”(以及其他提供商)应用

的身份验证
CREATE TABLE authentications (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `provider` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `uid` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `access_token` text COLLATE utf8_unicode_ci DEFAULT NULL,
  `secret` text COLLATE utf8_unicode_ci DEFAULT NULL,
  `created_at` int(11) DEFAULT NULL,
  `updated_at` int(11) DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL,
  `expires` int(12) DEFAULT '0',
  `refresh_token` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique` (`user_id`,`provider`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

示例数据:

INSERT INTO `default_authentications` (`id`, `provider`, `uid`, `access_token`, `secret`, `created_at`, `updated_at`, `user_id`, `expires`, `refresh_token`) VALUES
(10, 'twitter', '754569028', '897234097-FxwID1nybWTIMmZs1hngsaWwedsfsfx7uiwxMwfU4s', '7uc1vzBAL9rA8h38asdfasfasOzeJkyt1jU1Zj4c', 1344632332, NULL, 1, NULL, NULL);