これは私の設定です:
ここで、ASP.NETMVCフロントエンドを構築したいと思います。認証後に受け取ったトークンをCookieに入れて、安全な通話を行うたびにアクセスできるようにしても大丈夫ですか? http呼び出しを行うためにRestSharp DLLを使用します。セキュリティ上の欠陥がある場合、トークンをどこに保存する必要がありますか?
私はクッキーにこのコードを使用します:
System.Web.HttpContext.Current.Response.Cookies.Add(new System.Web.HttpCookie("Token")
{
Value = token.access_token,
HttpOnly = true
});
あなたは正しい道を進んでいます! Cookieには常にHttpOnly
フラグが必要です。このフラグを設定すると、JavaScript環境(Webブラウザー内)がCookieにアクセスできなくなります。これは、ブラウザでのXSS攻撃を防ぐための最良の方法です。
また、本番環境ではSecure
フラグを使用して、CookieがHTTPS経由でのみ送信されるようにする必要があります。
また、 [〜#〜] csrf [〜#〜] 攻撃を防ぐ必要があります。これは通常、リクエストごとに提供する必要がある別のCookieに値を設定することによって行われます。
私は Stormpath で働いており、フロントエンドのセキュリティに関する多くの情報を書いています。これらの2つの投稿は、すべての側面を理解するのに役立つ場合があります。
https://stormpath.com/blog/build-secure-user-interfaces-using-jwts/
独自のJWTを生成していますか?
はいの場合は、「RS256」や「RS512」などの非対称暗号化に基づく署名アルゴリズムの使用を検討する必要があります。これにより、プライベートシークレットを共有せずにクライアントアプリケーションでクレームを検証できます。
本当にJWTをCookieに渡す必要がありますか?
JWTアクセストークンを参照するランダムなIDをCookieに配置し、Webアプリを提供するサーバーで参照解除の魔法を実行する方が安全な場合があります。