セキュリティ
ログイン機能の落とし穴:セッション管理
2026年8月17日
この記事はAIが下書きを作成しています。内容に誤りに気づいた場合はお問い合わせよりお知らせください。

レン
ログイン機能って、パスワードが合ってたら通せばいいんだよね?

プロクラ
そこは入口だけの話だよ。難しいのはその後、「この人はさっきログインした人だ」とページを移動しても分かり続ける仕組みのほうなんだ。これをセッション管理と言う。
仕組み

プロクラ
ログインに成功したら、サーバーが推測できない長いランダムな文字列を発行して、利用者のブラウザに預ける。以降はそれを見せてもらうことで本人だと判断するんだ。いわば入場券だね。

ウィルスン
つまり、その入場券さえ手に入れば、ワタシはパスワードを知らずともキミになりすませる。だから狙うのはパスワードではなく、この券のほうだ。
守りは「重ねる」のが基本
攻撃
ファイア ウォール
不要な入口を塞ぐ
SSH 鍵認証
総当たりを無効化
OS更新
既知の穴を埋める
サーバー
1つ破られても次の層で止まる。どれか1つでは不十分
やりがちな失敗
- 推測できる値を使う(連番、ユーザーIDそのもの、時刻など)
- HTTPSにしていない(通信を覗かれれば券が丸見えになる)
- CookieにHttpOnly属性を付けない(XSSでプログラムから読み取られてしまう)
- Secure属性を付けない(暗号化されていない通信でも送られてしまう)
- ログアウトしてもサーバー側で無効化しない(券が生き続ける)
- 有効期限が無い、または長すぎる

レン
けっこう項目が多い…全部自分で作るの大変そう。

プロクラ
だから認証は自作しないのが基本だよ。フレームワーク標準の仕組みか、実績ある認証ライブラリ・サービスを使おう。ここは「車輪の再発明」が最も損をする領域なんだ。落とし穴が多すぎて、自作で全部埋めるのは現実的じゃない。
プロクラ
あと1つ。パスワードをデータベースに保存するときは、必ず専用の方式でハッシュ化してね。そのまま保存するのは論外だし、単純なハッシュも不十分。この用途に作られた仕組みを使うことが大事だよ。
あわせて読みたい
- セキュリティDigitalOceanXSS:投稿された内容が他の人のブラウザで動く利用者の投稿をそのまま表示すると何が起きるのかと、エスケープ処理の考え方を解説。
- セキュリティDigitalOceanSQLインジェクション:入力欄からデータベースを操られる利用者の入力をそのままDBへ渡すと何が起きるのかと、パラメータ化クエリで防ぐ理由を解説。
- セキュリティVultrファイルアップロード機能は危険な機能利用者にファイルを置かせる機能に潜むリスクと、実装時に必ず守りたい条件を解説。
- セキュリティクラウドVPS byGMO信頼していたライブラリが乗っ取られる正規のライブラリに悪意あるコードが混入する手口と、個人開発者にできる備えを解説。