2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PHP SESSION セッションハイジャック対策 ハッシュ化

Last updated at Posted at 2022-06-11

初めに

自身の備忘録として記述いたします。
一つの方法として見ていただければと思います.
重要な情報を扱う際は、更なる対策が必要になると思いますので、ご注意ください。

セッションハイジャックとは?

攻撃者がログイン中の利用者のセッションIDを不正に取得し、セッションを乗っ取る攻撃手法。
この攻撃手法では利用者のIDやパスワードを知ることなく、アカウントの乗っ取りが可能となってしまう。

対策1 パスワードのハッシュ化

1:パスワードをハッシュ化する

password_hash()を使うことで、簡単にハッシュ化ができます。

$hash_password = password_hash("パスワード", PASSWORD_DEFAULT);

2:ハッシュ化されたパスワードと、入力されたパスワードの比較

password_verifyを利用することで、
「ハッシュ化されたパスワード」と「ハッシュ化されていないパスワード」が同一のものかを判断し、truefalseで返してくれます。

//左側の引数が「ハッシュ化前」、右側が「ハッシュ化後」
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を代入
  }
}

終わりに

もし認識違い等あれが、ご教授いただけると幸いです。

Twitter
https://mobile.twitter.com/tatsuki_kt

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?