2017-10-15 4 views
1

Mozquittoを実行しているサーバーにMQTTデータを送信するJavaScript Webページがあります。 MQTTサーバー名、ユーザー名、およびパスワードをユーザーから隠しておきたい。私は、ソースがコンソールに表示されているので、プレーンJavaScriptでは不可能であることを知っています。Firebase Cloud機能でJavaScriptコードを非表示にすることはできますか?

Firebaseクラウド機能でも可能ですか?そしてもしそうなら、どのように?

答えて

5

これが実際にCloud Functions for Firebase documentationで述べた主要な機能の一つである:

は、プライベートあなたのロジックを保持し、多くの場合

を確保、開発者はへのサーバ上のアプリケーション・ロジックを制御することを好みますクライアント側の改ざんを防ぎます。また、そのコードをリバースエンジニアリングできるようにすることは望ましくないことがあります。クラウド機能はクライアントから完全に隔離されているため、プライベートであり、常に正確に実行できます。

Firebaseのfunctions-samples repoにはかなりのサンプルがあります。

たとえば、ユーザーに電子メールによる確認を送信するサンプルでは、​​電子メールを送信するためのGmail資格情報が必要です。これらの資格情報をアプリケーションコードに埋め込むことは決して望ましくありません。悪意のあるユーザーがその資格情報を見つけて悪用する可能性が高いからです。したがって、このコードはクラウド機能で実行するのに最適な候補です。

// Configure the email transport using the default SMTP transport and a GMail account. 
// For other types of transports such as Sendgrid see https://nodemailer.com/transports/ 
// TODO: Configure the `gmail.email` and `gmail.password` Google Cloud environment variables. 
const gmailEmail = encodeURIComponent(functions.config().gmail.email); 
const gmailPassword = encodeURIComponent(functions.config().gmail.password); 
const mailTransport = nodemailer.createTransport(
    `smtps://${gmailEmail}:${gmailPassword}@smtp.gmail.com`); 

あなたは、あなたのプロジェクトの開発者だけがそれを見ることができるようになりますから、ハードコードのメールアドレスとパスワード可能性:このサンプルからcode that reads these values。しかしこの場合、サンプルではそれがさらに良くなり、資格情報はサーバー側の構成ではfunctions.config()で保持されます。これらを設定する方法については、documentation for the sampleをお読みください。あなたのアカウントは2を持っている場合gmail.emailgmail.password Googleクラウド環境変数は、Gmailアカウントのメールアドレスとパスワードに一致するように設定し

は、電子メール(またはアプリのパスワードを送信するために使用しましたステップ認証が有効になります)。この使用のために:

firebase functions:config:set gmail.email="[email protected]" gmail.password="secretpassword" 
0

私もAPIキーがfirebase機能の上に安全に保存することができると思います。 firebaseの設定変数を保存してアクセスする詳細な方法については、an articleGithub repoに私の考えを書きました。見てみましょう。

関連する問題