1

PHP サービスで認証する必要がある Android アプリを作成しています。私の現在のアプローチは、ユーザーが最初にログインしたときに、uniqid() を使用して一意の ID を生成することです。この uid は、ユーザー名とともにデータベースのテーブルに格納されます。ユーザーには、この uid が返されます。

その後、サーバーへの以降のすべてのリクエストは、uid とそのユーザー名を送信し、ユーザーを認証するためにデータベースでチェックされます。

このアプローチは大丈夫ですか?または、私が見逃している大規模なセキュリティホールですか?

4

1 に答える 1

1

ここでいくつか問題があります。1つuniqid()は、ほぼ完全にタイムスタンプで構成されており、非常に予測可能です。車輪を再発明する代わりに、PHP のsession_start(). 何らかの理由で PHP のセッションを使用できない場合は、session_id().

その他の問題として、アプリケーションが sql インジェクションの影響を受けている場合、攻撃者はセッション ID をデータベースから引き出してログインすることができます。パスワードがハッシュ化される理由は、データベースが侵害された後に攻撃者を遅らせるためです。攻撃者がセッション ID を持っていれば、ログインするためにパスワード ハッシュをクラックする必要はありません。(パスワードを正しくハッシュしています...) 1 つのオプションはaes_encrypt()、保存されたセッション ID で MySQL を使用することです。

于 2012-07-31T15:55:58.750 に答える