2016-09-23 3 views
0

安らかなAPIにセッションがないうちに、安心してapiで試行回数を管理するにはどうすればよいですか?安らかなAPIでエンドポイントへの試行回数を管理

+0

定義上、RESTful APIはステートレスなので、状態を必要とするログインを処理するには適していません。それはおそらく疑わしい活動を記録し、それに応じてIPアドレスをブロックすることをお勧めします。 – Mike

答えて

0

token_storage_tblなどのデータベース内のテーブルを作成し、その後、3つの列を追加します。TID(int型)255 PK AI、トークン(varchar型)1024、times_used int型(255)

あなたは、クエリへの接続を使用することができます

とtimes_usedテーブルをインクリメントします。その使用されて回数を調べるに

$smtp = $pdo->Prepare('UPDATE token_storage_tbl SET times_used = ? WHERE token = ?'); 
$smtp->execute(array(....)); 

$maxUse = 3; 
$smtp = $pdo->Prepare('SELECT times_used FROM token_storage_tbl WHERE token = ?'); 
if($smtp->execute(['token here'])->fetch()['times_used'] > $maxUse) { 
    // oh no... its been used too much 
} 
+0

RESTfulを使用していることを考慮すると、開発者はトークンをエンドポイントに送信して情報を取得することができますが、ブルートフォースを止めることはできません。あなたがそのルートを考えているなら、IP失敗の試みを記録し、疑わしい活動を監視するのが最善です。 IPが1時間以内にデータを5回間違って要求した場合、疑わしくなります。 – KDOT

+0

トークンジェネレータのエンドポイントが存在し、侵入者が必要なだけ多くのトークンを生成できる必要があります。 – HPM

+0

認証を使用しているため、実際はありません。攻撃者が要求しているアクセススコープを確認するユーザーが攻撃者が要求していない限り、トークンは攻撃者によって生成されません。その場合にのみ、トークンを取得してエンドポイントに渡すことができます。したがって、ユーザーがリスクを知っていることを確認し、後で(Auth 2.0のような)@HPM – KDOT

0

あなたが求めているものは、あなたの残りのAPI用のカスタムセキュリティロジックです。それは決して休息APIの一部であってはなりません。 restはそのようなセキュリティロジックを実装すべきではなく、APIとして実行されるべきものだけを行うべきです。

カスタムセキュリティロジックのレイヤリングを確実に行うことができます。コールの保守や監査を行うフィルタを追加して、APIのセキュリティを強化するために使用できます。

確かに、特定のクライアントによる呼び出し回数を確認するためには、持続する必要があります。

+0

APIに自分自身のセキュリティロジックを持たせる必要があるユーザーを管理することができます。特定のエンドポイントが公開されており、そのエンドポイントへのアクセス数を制限する必要があります。それを処理する一般的な方法は? – HPM

関連する問題