2011-03-04 4 views

답변

5

꽤 끝나지 않은 질문이지만, PHP에서 세션을 사용할 때 고려해야 할 가장 중요한 사항은 하이재킹이 얼마나 쉬운 것인지 생각합니다. PHP 세션은 모든 값을 서버 캐시에 저장합니다.이 값은 클라이언트의 쿠키에 기록 된 세션 ID를 기반으로 검색됩니다. 해당 세션이 활성화되어있는 한 해당 세션 ID로 연결된 클라이언트는 해당 세션에 대한 액세스 권한이 부여됩니다.

firesheep과 같은 몇 가지 무서운 프로그램이 있는데, 세션 ID를 집어 넣고 직접 만들 수 있다는 것을 보여줄 수 있습니다. 해당 세션의 보안을 기반으로 할 경우 SSL을 통해 모든 작업을 수행해야하며 세션이 도용되지 않았는지 확인하기 위해 몇 번째 유효성 검사 계층을 구축해야합니다.

이 모든 세션은 사용자 응용 프로그램 환경의 수명주기 동안 액세스해야하는 영구 값을 저장할 수있는 좋은 곳입니다.

+1

유효한 인수이지만이 인수는 쿠키와 세션에 대해 더 잘 작동합니다. – gnur

+0

동의하지만 쿠키가없는 경우 세션이 없음 – Infotekka

+2

이 답변은 PHPSESSID 쿠키 때문에 하이재킹하는 것이 쉽기 때문에 세션을 사용하지 말아야 함을 의미합니다. 쿠키는 쿠키를 사용해야 함을 의미하지만 얼마나 쉽게/도둑질을하기 때문에 이해가되지 않을 것입니다. 보안에 관해 좋은 점을 제기하지만 세션과 쿠키는 논의하지 않습니다. –

9

Infotekka가 이미 여기에 들어가기 때문에 여기서는 보안에 대해 다루지 않을 것입니다. 세션이나 쿠키가 서로에 대한 대안 인 것처럼 세션을 사용해야하는지 쿠킹을 사용해야하는지 묻는 것처럼 보입니다.

그렇지 않습니다. 그들은 서버 (이것은 오타였다. 그러나 나는 그것을 좋은 익살 인 사촌에게 남겨두고있다) 다른 목적.

HTTP는 상태 비 저장이므로 PHP (및 기타)는 세션을 사용하여 응용 프로그램에서 상태 시스템을 시뮬레이션 할 수있는 기능을 제공합니다. 이렇게하지 않으면 모든 페이지간에 POST/GET을 사용하여 데이터를 일관성있게 유지해야하며 사용자가 다른 페이지로 이동하면 데이터가 손실됩니다! 따라서 세션이 없으면 사용자가 귀하의 사이트에 로그인하지 못하게 될 것입니다. 최소한 일관되게는 그렇지 않습니다.

요약하면 SESSION은 오랫동안 HTTP를 사용하지 않고도 사이트의 여러 페이지간에 데이터를 유지하는 데 사용됩니다. 그것은 그것이 사용되는 것이다.

나는 이것을하기 위해 COOKIE를 사용할 수 있다고 생각하지만, 특히 세션에 직렬화 된 객체를 다룰 때 훨씬 더 복잡합니다. 설정된 COOKIE는 다음 페이지가로드 될 때까지 액세스 할 수 없으므로 다른 헤더와 마찬가지로 스크립트가 출력하기 전에 설정해야합니다.

세션은 사용자가 사이트에서 작업하는 데 오래 동안 컴퓨터에 앉아있을 때 갖는 세션이어야합니다. 휴가가 끝나면 세션이 끝납니다.

쿠키는 오랜 기간 동안 간단한 데이터를 저장하는 데 사용해야합니다. 그들이 웹 사이트를 많이 방문하면 사용자 이름이 기억되기를 원할 수 있으므로 쿠키로 저장할 수 있습니다. Infotekka가 지적한 보안 문제에 유의하십시오.

EDIT : 마지막으로 사용자와 브라우저 사이의 모든 페이지 요청에서 COOKIE가 전송된다는 점을 추가해야합니다. 쿠키가 많으면 페이지로드 시간이 길어집니다.

+1

게시물/가져 오기에서 데이터를 안정적으로 유지하려고 시도 할 수 없다는 점에 대한 좋은 지적 – Infotekka