2017-02-16 4 views
2

Ich benutze Laravel als API und AngularJs für Frontend.Sicherheitsproblem in Token im Frontend und API

Von API, Daten kommen so.

und im AndularJs Controller wird es wie unten in Cookies gespeichert.

$cookies.put("Token", response.data.Data.Token); 

und dann von den Cookies, wird es wie folgt

$cookies.get("Token"); 

abgerufen werden denke ich, sind diese Sicherheitsprobleme wie wenn jemand das Token zu wissen bekommt, würden sie einen Antrag einreichen.

Können Sie einen besseren Weg vorschlagen?

Können wir etwas wie ... die aktuellen Geräteinfo (Android oder Desktop oder etc ..) und speichern Sie den endgültigen verschlüsselten Wert (Token + Geräteinfo) in Cookie oder ein anderes Medium? Dann zum Zeitpunkt des Sendens der Anfrage an api .... könnten wir entschlüsseln, ob das gestohlene Token ist oder nicht ...? Kann ich irgendetwas verwenden, das in allen Geräten einzigartig ist?

+0

Die aktuelle Art, die ich verwende, ist eine Sitzung in PHP speichern das Token. Natürlich möchten Sie eckig verwenden, aber vielleicht können Sie eine Middleware schreiben, die das Token an Ihre Anfrage anfügt, basierend auf Ihrer Sitzung und wenn die Anfrage ajax/xhr ist. Ich finde das auch ein interessantes Thema, daher meine eigene Frage: http://stackoverflow.com/questions/42250310/you-can-have-your-api-and-eat-consume-it-in-laravel –

+0

Eigentlich mein Sorge ist ... was auch immer Sie von API zu Frontend senden ... wird in Cookies oder auf andere Weise gespeichert .. hier ist Sorge, wie sicher der Token ist Frontend? – Pankaj

+0

Das Token muss nicht immer den Browser erreichen, nur das Session Token (** nicht ** API) muss irgendwo im Frontend gespeichert werden (also ein Cookie). Aber in Laravel ist dieser Cookie nur ein Sitzungsbezeichner (der Sitzungstreiber ist ** nicht ** Cookie, aber er wird immer noch verschlüsselt) und daneben nicht in der Lage, außerhalb Ihrer Domain gelesen zu werden. –

Antwort

0

Es ist zwingend erforderlich, TLS/SSL (HTTP über TLS oder HTTPS) in Verbindung mit Web-Token zu verwenden, um eine sichere Kommunikation zwischen Ihrer API und dem eckigen Client zu gewährleisten. In den meisten Fällen reicht das Hinzufügen zusätzlicher Layer durch Verschlüsselung Die Token-Nutzdaten selbst verwenden die JSON Web Encryption (JWE) -Spezifikation, bevor sie in Ihren Cookies gespeichert werden.

Hoffe, das hilft.

0

Ich denke, eine mögliche Lösung ist Laravel Passport. Auf diese Weise speichern Sie im Frontend client_id und client_secret, und verwenden Sie sie dann, um das Autorisierungs-Token auszutauschen.