独自の認証システムを作成しています (Java を使用)。ユーザーが認証され、ユーザー オブジェクトがデータストアから読み込まれる場合、このユーザー オブジェクトをセッションに保存することは安全であり、ユーザーがセッションにユーザー オブジェクトを持っている場合、正当なログインによって取得された本物の有効なユーザー オブジェクトであると想定しますか? ここに表示されていないセキュリティ上の問題はありますか?
4 に答える
セッションハイジャック?ログイン ページに SQL インジェクションまたは XSS の可能性がありますか? 中間攻撃?
セキュリティで保護されたログイン システムを設計する際に考慮すべき事項をいくつか紹介します。
原則としてはい。
あなただけがセッション変数を完全に制御できます (クライアントはこれらの変数への読み取りアクセスも書き込みアクセスもできません)。認証メカニズムが回避された場合、それはユーザーが独自のセッション変数を設定したためではありません (たとえば、Cookie のコンテンツを設定できたからです)。
そうは言っても、もちろんWeb ページをハッキングする方法はあります ( CSRF、XSS などを含むOWASP トップ 10を読んでください)。
他のすべての投稿に追加すると、セキュリティ上の問題がもう 1 つあります。database
ユーザーのログイン時にのみユーザーを検証してからsession
、ユーザーがログインしていて、アクセスが取り消される間にアクティブになったときにユーザーを設定しますsession
。その場合、ユーザーはセッションの寿命までアクセスできますが、これは受け入れられません.
私は個人的にすべての Web アプリでこれを行う傾向がありますが、パスワードなどの機密データをセッションに保存する前に、ユーザー オブジェクトの機密データを削除または暗号化します。
別の方法として、セッションで必要なデータ (つまり、ユーザー ID、名、姓) のみを含む軽量バージョンのユーザー オブジェクトを入力して使用することもできます。