2017-04-06 10 views
0

私は、実行中のIonic/Angular 2アプリを持っていますlocalhost:8000このアプリケーションは、最終的にブラウザプラットフォーム上で動作します。アプリケーションはhttps://adawy/apiのローカルマシンでホストされているRESTFull APIを呼び出しています。adawyは私のホスト名で、hostsファイルとapache仮想ホストで定義されています。サーバー側はスリム3です。HTTPOnly Cookiesを使用してXSRFに対してJWTを保護する方法は?

認証時のAPIは、すべての要求で使用するJWTを返しています。

私の目標は、クロスサイトリクエスト偽造とクロスサイトスクリプティングからトークンを保護することです。トークンをjavascript変数または任意のローカルストレージに保存すると、javascriptからJWTにアクセスできるようになります。

私は、JWTをHTTPOnly Cookieとして返すことをお勧めします。したがって、javacriptからアクセスすることはできず、adawyドメインへの今後のリクエストでは、ブラウザによってのみ送信されます。

私はクッキーとして正常にトークンを返しましたが、問題は次のXHRリクエストでクッキーが送信されないことです。 enter image description here

また、私はDevtoolsのCookiesセクションにCookieが表示されません。

enter image description here

私は角がXSRF-TOKENクッキーを探していることにより、このような問題でサポートできることを知っています。 クッキーの名前をXSRF-TOKENに設定していますが、それ以外のリクエストではこのクッキーは送信されません。

角度がこのクッキーにアクセスしているかのように、これがどのように保護されるのだろうと思います。

次はCookieが送信されないリクエストです。角度コードは直接それを設定しているので、ヘッダAuthorizationを無視してください。私の角度のアプリで

enter image description here

最後のGETリクエストをしながら、私はwithCredentials: trueオプションを設定しています。

更新 私はadawy.comを使用していましたが、私はまだ同じ問題があります。

答えて

1

最初の応答は、許可されていない最上位レベルのドメインDomain=.adawy;Set-Cookieヘッダーを参照)にCookieを明示的に設定しようとします。できる場合はドメインなしで設定してみてください。または、tldがあるホスト名を使用してみてください。

+0

あなたの答えをありがとう。ドメインを「adawy、com」に変更しましたが、私はまだ同じ問題を抱えています。 –

+0

[localhostからのリクエストに対するCORSの例外はChromeでサポートされていません](http://stackoverflow.com/questions/10883211/deadly-cors-when-http-localhost-is-the-origin) [この問題は2014年に終了しました](https://bugs.chromium.org/p/chromium/issues/detail?id=67743)のように見えます。明らかに 'Access-Control-Allow-Origin:*'はlocalhostで動作するので、テストを終えることができますが、 'localhost'はno-goです。 – LinuxDisciple

+0

私はその質問に遭遇しました。それがホスト名として 'adawy.com'を使用している理由です。私は自分のクッキー設定そのものに何か間違っていると思う。しかし、私は把握することができません。 –

関連する問題