私はPHPのセッションセキュリティに関するいくつかの情報を見つけるために検索しましたが、いくつかの良いものを見つけましたが、これが一般的な攻撃に対するセッション保護にとって正しく安全であるかどうかはまだわかりません.
public static function session_start()
{
ini_set('session.cookie_httponly', 1);
ini_set('session.session.use_only_cookies', 1);
ini_set('session.entropy_file', '/dev/urando');
ini_set('session.cookie_lifetime', 0);
ini_set('session.cookie_secure', 1);
if(session_status() != 2) session_start();
//fixation security step
if(!isset($_SESSION[self::$_CHECK_KEY]) || $_SESSION[self::$_CHECK_KEY] !== self::$_CHECK_VAL)
{
session_regenerate_id();
$_SESSION[self::$_CHECK_KEY] = self::$_CHECK_VAL;
}
//Hijacking secuity step
if(isset($_SESSION[self::$_USER_AGENT]))
{
if(self::CryptPass(
$_SERVER['HTTP_USER_AGENT'],
self::$_USER_SALT,
$_SESSION[self::$_USER_AGENT])
!== $_SESSION[self::$_USER_AGENT])
{
$this->ReqLogin = true;
}
}
else
{
$_SESSION[self::$_USER_AGENT] = self::CryptPass($_SERVER['HTTP_USER_AGENT'], self::$_USER_SALT);
}
}
だから知りたいのですが、もっとうまくできることはありますか?やってはいけないことがありますか?