2017-10-15 5 views
1

Ich habe eine JavaScript-Webseite, die MQTT-Daten an einen Server mit Mosquitto sendet. Ich möchte den MQTT-Servernamen, Benutzernamen und das Passwort des Benutzers verbergen. Ich weiß, dass es mit reinem JavaScript nicht möglich ist, weil die Quellen in der Konsole sichtbar sind.Kann ich JavaScript-Code mit Firebase Cloud Functions ausblenden?

Ist es möglich, es mit Firebase Cloud-Funktionen zu tun? Und wenn ja wie?

Antwort

5

Dies ist in der Tat eine der wichtigsten Fähigkeiten in den Cloud Functions for Firebase documentation erwähnt:

Halten Ihre Logik privat und sicher

In vielen Fällen bevorzugen Entwickler Anwendungslogik auf dem Server zu steuern, Vermeiden Sie Manipulationen auf der Client-Seite. Manchmal ist es auch nicht wünschenswert, dass dieser Code rückentwickelt wird. Cloud-Funktionen vollständig vom Client isoliert, so können Sie sicher sein, es ist privat und immer genau das tut, was Sie wollen

Es gibt durchaus einige Proben in Firebase des functions-samples repo.

Zum Beispiel erfordert das Beispiel, das eine E-Mail-Bestätigung an Benutzer sendet, die gmail-Anmeldeinformationen zum Senden von E-Mails. Sie werden diese Anmeldeinformationen niemals in den Anwendungscode einbetten müssen, wo ein böswilliger Benutzer sie wahrscheinlich finden und missbrauchen könnte. Dieser Code ist also ein großartiger Kandidat für die Ausführung in Cloud-Funktionen. Die code that reads these values aus dieser Probe:

// 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`); 

Sie könnten hart Code die E-Mail-Adresse und das Passwort, da nur Entwickler auf Ihrem Projekt werden in der Lage sein, es zu sehen. Aber in diesem Fall macht das Beispiel es noch besser und behält die Anmeldeinformationen in der serverseitigen Konfiguration bei, die es mit functions.config() liest. Um zu erfahren, wie diese zu definieren, lesen die documentation for the sample:

Stellen Sie die gmail.email und gmail.password Google Cloud Umgebungsvariablen die E-Mail und das Passwort des Google Mail-Konto übereinstimmen verwendet E-Mails zu senden (oder das App-Passwort, wenn Ihr Konto verfügt über 2 - Schrittverifizierung aktiviert). Für diese Verwendung:

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

Ich denke sogar, API-Schlüssel sicher über Feuerbasis Funktionen gespeichert werden können. Ich habe meine Gedanken in an article und eine Github repo für einen detaillierten Ansatz zum Speichern Firebase Config-Variablen und Zugriff auf sie. Guck mal.

Verwandte Themen