2

私が作成したクライアントに Restful API を提供するサーバー アプリケーションがあります。これは私がこれまで行っていることです:

1)。クライアントがユーザー/パスワードを入力できるログイン REST URL を提供する (SSL 経由)

2)。サーバーでユーザーを認証し、sha1 で暗号化されたトークンを返します (ユーザーはこの時点でサーバーにログインしています)。トークンは sha1(user.email + date time など) のように作成されます。

3)。クライアントはトークンを使用してリクエストを行います

4)。サーバーで処理されるリクエストの場合、トークンはヘッダーまたは URL から読み取られ、ログインしているユーザーの sha1 (user.email + 日時など) と比較されます。

5)。一致した場合はリソースが返され、そうでない場合は 401 ログインしていませんが返されます。

6)。クライアントが完了したら、ログアウトして、ローカル トークンのコピーを削除できます。

これで十分かどうか教えてください。または、私がばかげたことをしていると思う場合は、改善できるようにお知らせください。

ありがとうございました

4

2 に答える 2

1

ええ、これはひどいです。独自のセッション ID を作成しているため、非常に安全ではありません。セッション ID は常にランダムな値でなければなりませんsession_start()。確かに安らかなわけではありませんが、構築しているセッションIDよりもはるかに安全です. アプリケーションに SQL インジェクションの脆弱性がある場合、別のユーザーのセッション ID を構築するために必要なデータを引き出すことができます。それは非常に不安です。

また、おそらくOWASP a9について聞いたことがないでしょう。実際、owasp のトップ 10 全体を読む必要があります。

于 2012-05-21T02:18:11.470 に答える
0

ユーザーが最初の呼び出しで資格情報を送信しても問題ないのに、なぜ sha1 トークン アプローチを気にする必要があるのでしょうか。毎回同じ資格情報を送信するだけで、「ログイン」の必要がなくなり、そのようなアプローチに必要なすべてのセッション管理が不要になります。

于 2012-05-20T17:52:37.663 に答える