APIとしてはLaravel、フロントエンドにはAngularJを使用しています。フロントエンドとAPIのトークンのセキュリティ問題
APIから、データはこのようになります。
$data = [
'Token' => \Auth::guard("api")->user()->api_token,
];
return \Response::json([
'Status' => true,
'Message' => 'ok',
'Data' => $data,
], $Code);
AndularJsコントローラでは、以下のようにクッキーに保存されています。クッキーから
$cookies.put("Token", response.data.Data.Token);
し、その後、それは私が考えるこの
$cookies.get("Token");
のように取得され、これは誰もがトークンを知って取得する場合、彼らはすべての要求を提出するなどのセキュリティ上の問題があります。
あなたはもっと良い方法を提案できますか?
現在のデバイス情報(アンドロイドやデスクトップなど)を取得し、最終的な暗号化された値(トークン+デバイス情報)をクッキーなどのメディアに保存できますか?それから、apiにリクエストを送信するときに....私たちはそれが盗まれたトークンであるかどうかを確認するために解読することができますか?すべてのデバイスでユニークな使い方はありますか?
私が使用する現在の方法は、PHPでセッションをトークンを保存させることです。もちろん、あなたは角度を使用したいかもしれませんが、あなたのセッションに基づいて、リクエストがajax/xhrの場合、トークンをリクエストに追加するミドルウェアを書くことができます。私はこれも興味深いテーマだと思うので、私自身の質問です:http://stackoverflow.com/questions/42250310/you-can-have-your-api-and-eat-consume-it-in-laravel –
実際に私心配です...あなたがapiからフロントエンドに送るものは、クッキーなどの手段で保存されます。ここで懸念されるのは、トークンがフロントエンドでどのように安全であるかです。 – Pankaj
トークンはブラウザーに到達する必要はありません。セッション(** not ** API)トークンは実際にフロントエンドのどこかに保存されなければなりません(クッキー)。しかし、このCookieはセッション識別子(セッションドライバの** cookieではありませんが、暗号化されていれば暗号化されます)があり、その隣にはドメイン外では読み取ることができません。 –