2016-10-18 16 views
0

私は帆を使ってアプリケーションを開発中です。ウェブとモバイル。セールアプリケーションでCSRF保護とJWTを同時に使用する方法はありますか?

私はアプリケーションがウェブ上で訪問しているときに提供するCSRF保護を使用したいと思います。リクエストがモバイルアプリから送信された場合。ペイロードでjwtを送信します。

帆の文書でプロパティーが見つかりましたcsrf.routesDisabledいくつかのルートでCSRFを無効にしました。しかし、それは私が望むものではありません。私は、たとえば、パラメータjwtが投稿リクエストで送信されているかどうかを確認する方法を見つけようとしています。パラメータが送信された場合は、それを確認して検証します。それ以外の場合は、フォームの_csrf値を確認します。これは可能ですか?

またはcsrf protecctionは、情報がサーバに送信される前に機能しますか。

私のより良い選択は、Webアプリケーションでもjwtを使用することですか?あなたはSailsJSでWebアプリを構築してきましたし、外部アプリケーションのためのRESTエンドポイントとしてコントローラのアクションを再利用しようとしているよう

この問題を解決するための任意の他の良いアイデアは大歓迎です

おかげ

答えて

0

サウンズ。

実際に行うべきことは、データアクセスをフロントエンドから切り離すことです。トークン認証を使用する独立したREST APIを用意してください。これは、Webフロントエンド(およびその他のアプリケーション)の両方で使用されます。

たとえば、私は現在EmberJSフロントエンドとiOSアプリケーションで使用されているSailsJS REST APIを使用しています。両方のフロントエンドは、ユーザトークンを使用してログインし、認証トークンを受信します。このトークンは、将来の要求に使用されます。トークンを検証するために、ポリシーがログイン認証エンドポイント以外のすべてをロックダウンします。

+0

私の避けようとしているのはあなたの応答@ScottFyfeに感謝します。 restPrefix –

+0

私の帆アプリで** restPrefix **を使用して、青写真とウェブビューを分離しました。 私が必要とする唯一のセキュリティは、投稿要求です。基本的に他のすべては絶対に公開されています。 たとえば、** update **イベントなどのすべてのコードを関数に囲んでいると思います。コントローラ内のそれぞれのイベントでモバイルアプリに使用する別のルートを作成します。リクエストが来るフォームに応じて、それぞれのイベントでチェックして検証します。ウェブアプリケーションでは** _ csrf **と** req.session.User.id **、モバイルではトークン を呼び出します。更新を行うには –

+0

まだハックのような回避策のように聞こえる。フロントエンドをREST APIのデータアクセスとは別のエンティティにすると、維持と拡張が容易になります。 –

関連する問題