2017-04-02 6 views
6

Es klingt vielleicht wie eine alberne Frage, denn Passwörter müssen natürlich gehashed werden und das Original niemals speichern.Sollten API-Geheimnisse gehashed werden?

für API Geheimnisse Allerdings, in der Regel sehe ich sie im Klartext angezeigt, wenn für sie die Anmeldung.

Zum Beispiel, wenn ich an die Google-API-Konsole gehen und schauen Sie sich meine Zugangsdaten Seite, kann ich meinen Klienten Geheimnis, das gleiche für Twitter ansehen.

Sicher sind API-Schlüssel genauso empfindlich wie Passwörter?

Ist es nur, weil von der Provider-Seite, Sie, dass ein ausreichend starkes Passwort generiert sicher sein kann, wird? Wenn das der Fall ist, dann bietet das keinen Schutz, wenn Ihre Datenbank kompromittiert ist.

Oder ist es vielleicht, weil Sie, wenn Sie Token-basierte Authentifizierung verwenden, entweder Passwort-Grant-Typ, der Sie Ihre Anmeldeinformationen zusammen mit der Client-ID und geheimen oder ein Aktualisierungstoken senden müssen, so würde ein Benutzer musste schon kompromittiert sein?

Antwort

4

ich ein paar mögliche Antworten auf diese vorstellen kann:

  • In einigen Fällen kann es für den Server erforderlich sein, dauerhafte Speicherung von Klar- API-Schlüssel zu haben, um Usability-Anforderungen (Google und Twitter zu befriedigen als Beispiele).
  • In einigen Fällen allein der API-Schlüssel ist nicht genug, um viel überhaupt zu tun - zusätzlich benötigt man ein authentifizierte Konto haben - und damit der API-Schlüssel selbst ist nur von begrenztem Wert (daher weniger Wert als ein Passwort) .
  • In einer Reihe von Fällen, die API-Schlüssel in einer Client-Anwendung (insbesondere mobile Anwendungen, die dies fast immer tun) fest einprogrammiert und deshalb macht es keinen Sinn, die einen zusätzlichen Schutz auf der Server-Seite hinzuzufügen, wenn das gleiche Token kann trivial aus dem Client extrahiert werden.
  • Die Sicherheitsindustrie ist noch nicht so ausgereift. Wenn Hacker anfangen, API-Schlüssel zu kassieren, können solche Ideen vielleicht ernsthafter genommen werden.

BTW, ich bin sehr ernst über den letzten Punkt. Die Wahrheit ist, dass viele gute Ideen erst Wirklichkeit werden, wenn eine kritische Masse an Unterstützung dahinter steht. Als Beispiel habe ich einmal über ein ähnliches Thema gebloggt - protecting user confidential information by hashing it in the database, aber so, dass es wiederhergestellt werden kann, wenn sich der legitime Benutzer anmeldet. Ich habe Ashley Madison als Beispiel benutzt - in diesem Fall waren die Hacker eher nach E-Mail-Adressen , Telefonnummern und physischen Adressen als Passwörter. Als die Hacker die Datenbank schnappten, hatten sie sofort, was sie wollten, und sie konnten sich weniger um die bcrypt-kodierten Passwörter kümmern (tatsächlich wurden einige ältere Passwörter nur mit MD5 kodiert!) Leider haben solche Konzepte nicht genug von a Drücken Sie, um sie Wirklichkeit werden zu lassen. Sogar Zero-Knowledge-Web-Designs sind in der realen Welt sehr selten.

+0

Danke. Für mich ist ein Client-Geheimnis eine sensible Information, daher werde ich mich immer dafür entscheiden, es zu hacken. Ich habe gelesen, dass AWS dies jetzt anscheinend tut (oder bald sein wird), also bin ich nicht der einzige, der denkt, dass es wahrscheinlich eine gute Idee ist :) Wie Sie gesagt haben, nehme ich an, dass Google und Twitter nicht Hash für Usability-Gründe, und unter Berücksichtigung ihrer Benutzerbasis ist es etwas verständlich (Aber selbst bei ihrer Größe würde ich lieber nicht). Guter Punkt über den mobilen Client, nehme ich an, das gleiche gilt für Javascript Apis (Das Geheimnis ist auf dem Client, so dass Sie die Kontrolle über sie verloren haben). – Steviebob

Verwandte Themen