Firebase 身份验证公开了 firebaseAuthToken,它安全吗?

Max*_*Max 3 angularjs firebase firebase-security angularfire firebasesimplelogin

我正在尝试为我的 Firebase 应用程序提供 Google 登录。遵循https://www.firebase.com/docs/security/simple-login-overview.html

似乎在成功登录后,可以获得一个用户,因此它可以例如存储在 Angular 范围中 - 例如 $scope.loggedInUser。(根据您的实现,它不一定是 Angular)

我的问题是,Firebase 返回的具有大量身份验证令牌的用户是否存在安全风险?代码是用 Javascript 编写的,黑客应该能够通过在浏览器中嵌入一些代码来劫持和窃取用户。

引起我关注的位是:accessToken、firebaseAuthToken

如果这是一种风险,我们如何确保它?


请参考以下代码进行身份验证和用户数据:

这是身份验证的代码:

authModule.controller( 'AuthController', [
  '$scope',
  '$firebase',
  function ( $scope, $firebase ) {
    var ref = new Firebase( 'https://test123.firebaseio.com' );

    var auth = new FirebaseSimpleLogin( ref, function ( error, user ) {
      if ( user ) {
        $scope.loggedInUser = user; // user has authenticated, this user contains security information
      }
    } );

    $scope.login = function () {
      auth.login( "google", {
        scope: 'https://www.googleapis.com/auth/plus.login'
      } );
    };
  }] );
Run Code Online (Sandbox Code Playgroud)

loginUser 中包含的内容(这只是示例数据):

loggedInUser:  { 
    id: 7058267704789236427849
    uid: google:7058267704789236427849
    displayName: Joe Bloggs
    provider: google
    thirdPartyUserData:  { 
        id: 709139364278942374
        email: test@gmail.com
        verified_email: true
        name: Joe Bloggs
        given_name: Joe
        family_name: Bloggs
        link: https://plus.google.com/2672340913423423
        picture: https://lh3.googleusercontent.com/.../photo.jpg
        gender: male
        locale: en-GB
     } 
    accessToken: W8k8dD6vvLEdlWa-dxkJD8lvWIwzea6m_86um8...
    email: test@gmail.com
    firebaseAuthToken: Q3Mjc4MzYsInYiOjAsImQiOnsiaWQiOiIxMDk0...
 } 
Run Code Online (Sandbox Code Playgroud)

Kat*_*ato 5

这基本上是一个关于 OAuth 及其运作方式的问题。加密令牌的生成是此过程的基础。关于是否可以以及在哪里存储此令牌(cookie、本地存储、内存等)有很多意见。

令牌安全吗?在 SSL 会话上使用时,OAuth 非常安全。Firebase 使用与其他大公司相同的 OAuth 实践和加密,它们都以类似的方式提供 OAuth 令牌(实际上,在简单登录中,您可以获得 Facebook 身份验证令牌,例如,作为登录有效负载的一部分,就像通过 Facebook 的 API 提供给我们的一样)。

这并不是说 OAuth 没有缺陷。安全性没有完美的答案,因为一切都需要权衡。唯一完全安全的系统是物理上不存在、未连接到任何网络且人类无法访问的系统。

关于 XSS 等:本质上,一旦巨魔进入城堡,中国就会被打破。如果客户端受到威胁,那么没有什么是安全的。如果用户设法以某种方式破坏您客户端的浏览器或执行成功的 XSS,那么他们可以通过多种方式访问​​您的帐户,无论我们是在谈论 OAuth 令牌还是简单的登录/密码字段。

总之,如果您相信 Google、Facebook、Twitter、Yahoo 和 M$ 身份验证相对安全,那么您可以对 Firebase 身份验证模式抱有同样的信心。