3

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'
      } );
    };
  }] );

LoggedInUser に含まれるもの (これはサンプル データです):

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...
 } 
4

2 に答える 2

5

これは基本的に、OAuth とその動作に関する質問です。暗号化されたトークンの生成は、このプロセスの基本です。このトークンをどこに保存してもよいかどうか (Cookie、ローカル ストレージ、メモリなど) については、さまざまな意見があります。

トークンは安全ですか? SSL セッションで使用する場合、OAuth は非常に安全です。Firebase は、他のビッグ ネームと同じ OAuth プラクティスと暗号化を利用しており、それらはすべて同様の方法で OAuth トークンを提供します (実際、Simple Login では、たとえば、ログイン ペイロードの一部として Facebook 認証トークンを取得できます。 FacebookのAPIを介して私たちに与えられたものとまったく同じです)。

だからといって、OAuth に欠点がないわけではありません。すべてがトレードオフであるため、セキュリティに完璧な答えはありません。完全に安全なシステムは、物理的に存在せず、ネットワークに接続されておらず、人間がアクセスできないシステムだけです。

XSS などについて: 本質的には、トロールが城に入ると、磁器が壊れます。クライアントが侵害された場合、安全なものは何もありません。ユーザーが何らかの方法でクライアントのブラウザを侵害したり、XSS を実行したりした場合、OAuth トークンを使用しているか、単純なログイン/パスワード フィールドを使用しているかに関係なく、さまざまな方法でアカウントにアクセスできます。

要約すると、Google、Facebook、Twitter、Yahoo、および M$ の認証が比較的安全であると信頼している場合は、Firebase 認証スキーマも同じように信頼できます。

于 2014-07-08T15:49:54.820 に答える