2017-02-16 13 views
2

我正在使用Laravel作爲API和AngularJs for Frontend。Token在前端和API中的安全問題

從API中,數據就是這樣來的。

$data = [ 
    'Token'  => \Auth::guard("api")->user()->api_token, 
]; 

return \Response::json([ 
    'Status' => true, 
    'Message' => 'ok', 
    'Data'  => $data, 
], $Code); 

和在AndularJs控制器中,它被保存爲像下面的cookie。

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

,然後從餅乾,它被檢索這樣

$cookies.get("Token"); 

我想,這是安全問題一樣,如果人要是知道的道理,他們會提出任何要求。

你能建議更好的方法嗎?

我們可以做類似...獲取當前設備信息(android或桌面等),然後將最終的加密值(令牌+設備信息)保存到cookie或其他媒體?然後在發送請求到api的時候....我們可以解密以確定這是否是被盜的令牌或不... ...?有什麼我可以使用的,在所有設備中都是獨一無二的?

+0

我現在使用的方式是讓PHP中的會話存儲令牌。當然你想要使用angular,但是也許你可以編寫一些中間件,根據你的session將請求追加到你的請求中,如果請求是ajax/xhr。我覺得這是一個有趣的主題,因此我自己的問題:http://stackoverflow.com/questions/42250310/you-can-have-your-api-and-eat-consume-it-in-laravel –

+0

其實我的值得關注的是......無論你從api發送到前端......是否會以cookie或其他方式保存......這裏關注的是令牌在前端有多安全? – Pankaj

+0

令牌不必到達瀏覽器,只有會話(**不是** API)令牌必須存儲在前端的某個地方(所以cookie)。但是在laravel中,這個cookie只是一個會話標識符(你的會話驅動程序的**不是** cookie,但它仍然會被加密,如果是的話),並且旁邊的將無法在你的域之外被讀取。 –

回答

0

它強制使用TLS/SSL(TLS或HTTPS上的HTTP)與Web令牌一起使用,以確保API和角度客戶端之間的安全通信,在大多數情況下,這將足夠您可以通過加密令牌有效載荷本身使用JSON Web加密(JWE)規範,然後將其存儲在您的Cookie中。

希望這會有所幫助。

0

我認爲可能的解決方案是Laravel Passport。通過這種方式,您可以在前端存儲client_idclient_secret,然後使用它們交換授權令牌。