HTTP 프로토콜은 상태 비 저장입니다. 세션은 HTTP 요청에서 클라이언트 상태를 유지하는 방법입니다. 플랫폼의 내장 세션 처리를 사용하거나 쿼리 문자열 매개 변수를 사용하여 직접 수행하도록 선택할 수 있습니다. 어느 쪽이든 세션의 개념은 많은 작업에 필요합니다.
동료가 특정 구현을 싫어하거나 의도 한 목적으로 세션을 사용하지 않은 것 같습니다. HTTP 요청에서 특정 클라이언트 연결에 대한 정보를 유지해야하는 경우 일부 세션 지속성이 필요합니다.
다음은 구현 관련 문제입니다.
세션 변수의 형식화되지 않은 특성
세션 변수의 글로벌 범위 특성
세션을 잃는로드 밸런싱 서버
응용 프로그램 풀 / 서버 다시 시작
예를 들어, 대부분 PHP에서 작업하고 세션 정보를 관계형 데이터베이스에 저장합니다. 그래서 내 세션 변수가 입력되었습니다. 로드 밸런싱 및 서버 재시작으로 세션 문제가 발생하지 않습니다.
이것은 더 흥미 롭습니다.
상태 손실을 유발하는 세션 시간 초과
세션은 대부분 쿠키를 통해 유지됩니다. 클라이언트는 언제든지 삭제할 수 있습니다. 그러나 쿼리 문자열 매개 변수를 통해 유지 될 수도 있으므로 클라이언트에서 시간 초과되지 않습니다. 서버 시간 초과는 사용자에게 달려 있습니다. 따라서이 문제조차 구현에 따라 다릅니다.
특정 구현이 마음에 들지 않기 때문에 전체 세션 개념을 버리지 마십시오. 훌륭한 웹 애플리케이션 프레임 워크는 세션을 올바르게 사용하여 사용자 로그인을 유지하거나 사용자의 현재 방문과 관련된 다른 것을 유지합니다. 사용자의 데이터베이스 레코드는 로그인 할 때 특정 정보를 저장하는 데 사용될 수 있으며 사용해야합니다. 그러나 익명 방문자는 최근 방문한 페이지의 짧은 목록 또는 선호하는 사이트와 같은 임시 정보도 세션에 보존 할 가치가 있습니다. 이미 본 통지를 숨 깁니다. 일반적으로 작은 임시 정보 만 세션 저장에 적합합니다.
using things like query string parameters instead
-이 경우 항상 가능하면 항상 쿼리 문자열 매개 변수를 사용하십시오. 해당 유형의 매개 변수에 세션을 사용하면 취약하며 사용자가 여러 탭을 열면 이상한 버그가 발생할 수 있습니다.