PHP 폼 토큰 사용 및 처리
나는 php 로 로그인 스크립트를 쓴 초학자이다.
지금까지 내가 받은 표 표시 문구입니다:
$_SESSION["form_token"] = md5(rand(time (), true)) ;
이 어구는 사용자가 로그인 후 보내겠다고 표시했다.
나의 유한한 이해는 포켓의 목적은 유일하게 유일하게 유일하게 유일하게 사용자를 인식하고, 포스터 정보를 숨기는 것이다.
그리고 모든 것이 모호하게 변했다.
다음은 나의 세 개의 개방성 문제:
When is the best time to "check" the form token for security purposes?
How do I check it?
When, if ever, do I "destroy" the form token? (IOW, would the form token stay "active" until the user logs out?
대답
네가 시도하고 있는 일을 할 필요가 없다.
session start () php 에서 세션을 시작할 때 유일하게 sessionid 를 생성했습니다.
너는 이것을 양식에 써서는 안 된다.
기본 상황에서 쿠키스를 통해 처리합니다.
sessionid 검사도 필요 없습니다.
이것도 처리해드립니다.
사용자에 대한 인증을 진행하고 세션에서 인증 인증을 받은 인증 (예를 들어 u sesssion ['useru id]=$user id.사용자가 로그아웃하면 세션 u destroy 를 사용하여 세션을 폐기합니다.
session start () 는 사이트 중 모든 페이지의 가장 중요한 임무 중 하나입니다.
다음은 기본 실례:
login($username, $password)) { $_SESSION['user_id'] = $user->getId(); return true; } return false; } function logout() { session_destroy(); } function isLoggedIn() { return isset($_SESSION['user_id']); } function generateFormHash($salt) { $hash = md5(mt_rand(1,1000000) . $salt); $_SESSION['csrf_hash'] = $hash return $hash; } function isValidFormHash($hash) { return $_SESSION['csrf_hash'] === $hash; }
편집: 나는 원래의 문제를 오해했다.
생성과 검증표 하희의 관련 방법을 증가시켰다.
다음 자원을 참고하십시오: