PHP에서 세션은 사용자와 서버 간의 데이터를 저장하는 데 사용됩니다. session_start () 함수는 세션을 시작합니다. 사용자가 로그인하면 PHP는 서버의 사용자에 대한 세션 ID를 생성하고 관련 데이터를 서버에 저장하는 반면 클라이언트는 쿠키를 통해 세션 ID를 저장합니다.
사용자 종료를 처리 할 때 가장 중요한 것은 세션의 모든 데이터를 지우는 것입니다. 이는 사용자 개인 정보를 보호하는 데 도움이 될뿐만 아니라 세션 납치 및 기타 보안 문제를 방지합니다.
사용자가 종료하면 Session_Destroy ()는 일반적으로 세션을 파괴하기 위해 호출되지만 모든 세션 데이터를 완전히 지우는 것은 아닙니다. 실제로, session_destroy ()는 세션 파일을 파괴하고 $ _session hyperglobal 변수의 데이터를 즉시 지우지 않을 수 있습니다.
세션 데이터를 완전히 지우려면 다음 단계를 따르십시오.
세션 데이터 파괴 : session_unset ()을 사용하여 $ _session 에 저장된 모든 데이터를 지우십시오.
세션 파일을 파괴하십시오 : session_destroy ()를 사용하여 현재 세션을 파괴하십시오.
다음은 사용자가 종료 할 때 세션을 재설정하는 특정 PHP 코드입니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 시작 session</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>();
</span><span><span class="hljs-comment">// 모든 것을 지우십시오 session 데이터</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_unset</span></span><span>();
</span><span><span class="hljs-comment">// 파괴하다 session</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_destroy</span></span><span>();
</span><span><span class="hljs-comment">// 삭제 session ID 저장 cookie</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ini_get</span></span><span>(</span><span><span class="hljs-string">"session.use_cookies"</span></span><span>)) {
</span><span><span class="hljs-variable">$params</span></span><span> = </span><span><span class="hljs-title function_ invoke__">session_get_cookie_params</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">setcookie</span></span><span>(</span><span><span class="hljs-title function_ invoke__">session_name</span></span><span>(), </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-title function_ invoke__">time</span></span><span>() - </span><span><span class="hljs-number">42000</span></span><span>, </span><span><span class="hljs-variable">$params</span></span><span>[</span><span><span class="hljs-string">"path"</span></span><span>], </span><span><span class="hljs-variable">$params</span></span><span>[</span><span><span class="hljs-string">"domain"</span></span><span>], </span><span><span class="hljs-variable">$params</span></span><span>[</span><span><span class="hljs-string">"secure"</span></span><span>], </span><span><span class="hljs-variable">$params</span></span><span>[</span><span><span class="hljs-string">"httponly"</span></span><span>]);
}
</span><span><span class="hljs-comment">// 로그인 페이지 또는 홈페이지로 리디렉션합니다</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Location: login.php"</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>session_start () : 세션을 시작하십시오. 시작하지 않으면이 단계가 필요합니다.
session_unset () : $ _session hyperglobal 변수의 모든 데이터를 지우겠습니다. 이것은 사용자의 세션 데이터가 제거되도록하는 첫 번째 단계입니다.
session_destroy () : 세션 파일을 파괴하지만 $ _session 변수를 지우지 않으므로 데이터를 지우려면 Session_Unset ()을 호출해야합니다.
세션 쿠키 삭제 : PHP가 쿠키를 사용하여 세션 ID를 저장하는 경우 사용자의 브라우저가 더 이상 세션 ID를 저장하지 않도록 클라이언트에 저장된 쿠키를 명시 적으로 삭제해야합니다. 쿠키 만료 시간을 지난 시간으로 설정하면 쿠키 삭제 효과가 달성됩니다.
리디렉션 : 마지막으로, Exit 작업을 완료하려면 Header () 함수를 통해 사용자를 로그인 페이지 또는 홈페이지로 리디렉션하십시오.
세션 쿠키 삭제는 특히 민감한 작업 후에 일반적인 보안 조치입니다. 브라우저가 닫힌 후 사용자가 세션 데이터에 직접 액세스 할 수 없을 경우에도 공격자는 세션 ID를 사용하여 쿠키에 저장된 경우 세션을 복원 할 수 있습니다. 따라서 세션 쿠키가 삭제되도록하는 것이 필요한 단계입니다.
세션 납치 방지 : 세션 납치 방지를 방지하기 위해 Session_Regenerate_id (True)를 사용하여 사용자가 로그인 할 때 새 세션 ID를 생성하여 이전 세션 ID를 위조 할 수 없도록 할 수 있습니다.
HTTPS 보안 전송 : HTTPS를 사용하여 전송 중에 세션이 도난 당하지 않도록 사용자 세션 데이터를 보호합니다.
정기적으로 만료 세션을 정리하십시오 : 합리적인 세션 시간 초과 메커니즘을 설정하고 PHP 세션을 구성하여 세션 만료 시간을 제어하고 더 이상 사용되지 않는 세션을 정기적으로 정리하십시오.