相关疑难解决方法(0)

将Firebase apiKey暴露给公众是否安全?

火力web应用指南规定我应该把给定的apiKey在我的HTML初始化火力点:

// TODO: Replace with your project's customized code snippet
<script src="https://www.gstatic.com/firebasejs/3.0.2/firebase.js"></script>
<script>
  // Initialize Firebase
  var config = {
    apiKey: '<your-api-key>',
    authDomain: '<your-auth-domain>',
    databaseURL: '<your-database-url>',
    storageBucket: '<your-storage-bucket>'
  };
  firebase.initializeApp(config);
</script>
Run Code Online (Sandbox Code Playgroud)

通过这样做,apiKey暴露给每个访客.这把钥匙的目的是什么,它真的是公开的吗?

javascript firebase

368
推荐指数
8
解决办法
8万
查看次数

按照最佳做法正确地将API密钥存储在抖动中

如果我想将代码推送到github上,这是在flutter中添加秘密API密钥的正确方法(最佳实践)。我已经制作了一个使用API​​的简单应用程序,但是我以粗鲁的方式使用了该密钥,只是为了测试该应用程序是否正常工作。通常,根据我在后端开发应用程序的经验,密钥存储在某个位置和其他文件中,然后将其简单地导入到需要的所需文件中,API_KEY并将文件中的.gitignore文件排除在外。

到目前为止,我还实现了这种方法:

文件夹树

-lib
  -auth
    -keys.dart
    -secrets.json 
Run Code Online (Sandbox Code Playgroud)

secrets.json

在这里,我将添加,KEY.gitignore在推送代码时指定此文件被排除在github中之外。

//Add API KEY HERE
{
  "api_key": "ee4444444a095fc613c5189b2"
}
Run Code Online (Sandbox Code Playgroud)

keys.dart

import 'dart:async' show Future;
import 'dart:convert' show json;
import 'package:flutter/services.dart' show rootBundle;


class Secret {
  final String apikey;

  Secret({this.apikey=""});

  factory Secret.fromJson(Map<String, dynamic>jsonMap){
    return new Secret(apikey:jsonMap["api_key"]);
  }
}


class SecretLoader {
  final String secretPath;

  SecretLoader({this.secretPath});
  Future<Secret> load() {
    return rootBundle.loadStructuredData<Secret>(this.secretPath,
            (jsonStr) async {
          final secret = Secret.fromJson(json.decode(jsonStr));
          return secret;

        });
  }
}
Run Code Online (Sandbox Code Playgroud)

我觉得这种方法太多了。我希望获得更好方法的建议。

dart flutter

10
推荐指数
4
解决办法
3769
查看次数

标签 统计

dart ×1

firebase ×1

flutter ×1

javascript ×1