2017-08-09 20 views
-1

私たちのAPIへの不正アクセスを防ぐために、どうすればよいですか?公開サイトから公開されているHMAC API?

背景

次の図は、認証された消費者に商業的に機密データを返す私たちが実装しようとしているマイクロサイト、および(いくつかの目的のために)私たちが提供しているHMACのAPIを示しています。矢印は、意図された(緑色)および意図しない(赤色)通信を表す。

component diagram

HMACのAPIは、アドレス自動補完するためのものです。マイクロサイトのログインはありません。ページにはアドレス入力があります。オートコンプリートを有効にするには、各キーストロークの後にAJAX GETをコントローラに呼び出します。各AJAX GET呼び出しに対して、コントローラはHMACを構築し、HMAC APIに対して要求を行います。

問題

私は現在、AJAXのGETメソッドの消費を防止することは何も見ることができません。

考慮事項

私がきたAnitForgeryTokensは、GETメソッドで有用ではないですが、readあなたはPOSTにそれを回すことにより、この問題を回避できること。これは少し醜いと思うが、これはマイクロサイト(1か月後に私たちはそれを投げ捨てている)なので、私は醜いセキュリティーを覚えようとしている。

それから7年、それはまだ最高の方法ですか?

+0

@Amy、私はページ認証がないのでAJAX呼び出しが認証されるとは思えません。しかし、多分私は何かを欠いている? – OutstandingBill

+0

@Amy、トークンをページに埋め込む必要はありませんか?それで盗まれる可能性がありますか? – OutstandingBill

+0

@Amy - cookie/embeddedは、攻撃者が自分のページをリクエストしてトークンを取得し、意図しないリクエストで添付/埋め込むことができるため、違いはありません。 – OutstandingBill

答えて

2

あなたが任意の認証および承認(「認証されていないコントローラ」を)持っていない場合は、不正のようなものは存在しないことができ、認証されていないコントローラに

の方法への不正アクセスを防止アクセス:すべてのアクセスが許可されます。そして、存在しないものを防ぐことはできません。

あなたのユースケースで許可されていないアクセスが何を意味するか定義できれば、それを防ぐためにいくつかの権限を追加することができます。

+0

申し訳ありませんが、私は技術的な意味を持つ用語を使用していますが、より一般的な意味で使用しています。 「無許可」とは、マイクロサイト外から発せられたリクエストを意味します。 – OutstandingBill

+0

@OutstandingBill:正確に「外側」と「内側」とは何ですか? 「内部」がクライアントからの特定のIPアドレス範囲である場合、IPによるアクセスを制限することができます。 「内部」とは、ブラウザが最初にマイクロサイトにアクセスしてAPIを訪問したことを意味する場合、APIで検証できるマイクロサイトによって署名された時間制限トークンなどの証明を含める必要があります。 –

+0

意図したユーザーのIPアドレスがわかりません。ユーザーはAPIにアクセスせず、コントローラを訪問します(実際にはAPIだと主張できますが、私のダイアグラムと一貫しています)。それにもかかわらず、コントローラによって提供されたページには、有効期限付きのトークンを含めることができます。トークンは、「一般的な意味で」不正な呼び出しで「盗まれ」使用される可能性があります。 – OutstandingBill

関連する問題