初めに
自身の備忘録として記述いたします。
一つの方法として見ていただければと思います.
重要な情報を扱う際は、更なる対策が必要になると思いますので、ご注意ください。
セッションハイジャックとは?
攻撃者がログイン中の利用者のセッションIDを不正に取得し、セッションを乗っ取る攻撃手法。
この攻撃手法では利用者のIDやパスワードを知ることなく、アカウントの乗っ取りが可能となってしまう。
対策1 パスワードのハッシュ化
1:パスワードをハッシュ化する
password_hash()
を使うことで、簡単にハッシュ化ができます。
$hash_password = password_hash("パスワード", PASSWORD_DEFAULT);
2:ハッシュ化されたパスワードと、入力されたパスワードの比較
password_verify
を利用することで、
「ハッシュ化されたパスワード」と「ハッシュ化されていないパスワード」が同一のものかを判断し、true
かfalse
で返してくれます。
//左側の引数が「ハッシュ化前」、右側が「ハッシュ化後」
password_verify($password, $hash_password);
対策2 セッションIDを遷移時に変更
ページが遷移する度に、セッションIDを変更します。
session_regenerate_id
を利用する事で、セッションIDの変更が可能です。
chk_ssid
にはセッションIDが格納されている前提です。
function sschk(){
//セッションIDの確認
if(!isset($_SESSION["chk_ssid"]) || $_SESSION["chk_ssid"]!=session_id()){
exit("Login Error");
}else{
//画面遷移するたびに、idを変える
session_regenerate_id(true); //ここでセッションidを変更
$_SESSION["chk_ssid"] = session_id(); //変更後のセッションIDを代入
}
}
終わりに
もし認識違い等あれが、ご教授いただけると幸いです。