[解決済み] REST API 呼び出しのセキュリティを確保するにはどうすればよいですか?
質問
私は、バックエンドにいくつかの一般的なWebフレームワーク、例えば(rails、sinatra、flask、express.js)を使用して、restful Webアプリケーションを開発しています。理想的には、Backbone.jsでクライアント側を開発したいと思っています。私のjavascriptクライアント側だけがこれらのAPIコールと相互作用するようにするにはどうすればよいですか?私はそれらのAPIコールが公開され、それによって呼び出されることを望んでいません。
curl
または単にブラウザ上でリンクを入力することによって呼び出されます。
どのように解決するのですか?
第一の原則として、APIがJSクライアントによって消費される場合、それが公開されていると仮定する必要があります。単純な JS デバッガーは、攻撃者が自分の選んだツールからバイト単位で同一のリクエストを送信できる状態にします。
とはいえ、もし私があなたの質問を正しく読むならば、これはあなたが避けたいことではありません。本当に起こってほしくないことは、JS クライアントが関与することなく API が (定期的に) 消費されることです。強制しないにしても、少なくともクライアントを使用することを奨励する方法について、いくつかのアイディアがあります。
-
あなたの API には、ある種の認証フィールド (たとえば、クライアントで計算されるハッシュ) があるはずです。そうでない場合、次のものを見てください。 このSOの質問 . JSクライアントに渡されるソルト(あるいはAPIキー)を、必ず セッション ベースでJSクライアントに与えられるソルト(あるいはAPIキー)を使うようにしましょう(ハードコードされていてもかまいません)。こうすることで、APIの未承認の消費者は、より多くの作業を強いられることになります。
-
JSクライアントをロードする際、いくつかのHTTPヘッダー(ユーザーエージェントが思い浮かびます)とIPアドレスを記憶し、それらが変更された場合、通常の容疑者のためのブラックリストを採用し、再認証を求めましょう。これにより、攻撃者はより徹底した下調べを再度行わなければならなくなります。
-
サーバー側では、直近の数回のAPIコールを覚えておき、別のコールを許可する前に、ビジネスロジックが今すぐ新しいコールを許可するかどうかをチェックします。これにより、攻撃者が自分のセッションの多くをサーバーとの 1 つのセッションに集中させることを拒否できます。他の対策と組み合わせることで、不正使用者を簡単に発見することができます。
必要なことを明確に言えなかったかもしれません。私はそれを 不可能 しかし、あなたはそれを非常に困難にすることができるので、手間をかける価値はないかもしれません。
関連
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] SOAPとRESTの比較(相違点)
-
[解決済み] RESTful WebServiceにファイルや関連データをJSONで投稿する。
-
[解決済み] RESTを理解する。動詞、エラーコード、認証
-
[解決済み】PHPパスワードのハッシュとソルトの安全性について
-
[解決済み】REST APIでのPUTメソッドとPATCHメソッドの使い分け 実生活でのシナリオ
-
[解決済み] ステートレス(セッションレス)・クッキーレス認証を行うには?
-
[解決済み] Firebaseのデータ改変を制限するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン