2010-03-15 5 views

답변

16

세션 데이터는 서버에 저장됩니다. 세션 ID 만 클라이언트와 서버간에 앞뒤로 전송됩니다. 서버 측 스크립트가 망가 지거나 (또는 ​​버그가있는 경우가 아니라면) 클라이언트는 세션 데이터를 직접 변경할 수 없습니다. 그러나 특정 클라이언트를 특정 세션에 연결하기 때문에 "올바른"클라이언트 만 세션 ID를 알고 있는지 확인해야합니다. 예 : (당신이 로그인을 언급했기 때문에) session fixation

4

예 .. 예방하기 위해 로그인 할 때마다 session_regenerate_id()을 사용하십시오. 세션 위조/도용이라고합니다.

다른 사용자 세션을 얻을 때까지 세션 쿠키 값을 변경합니다.

+2

+1 세션 하이재킹을 지적하고 있지만 서버의 변수가 변경되지 않도록 추가해야합니다. 한 사용자가 다른 사용자를 위해 포즈를 취하는 것을 허용 할 수 있습니다. 이 보안/가능성은 세션 ID의 복잡성과 세션 ID의 유효 기간에 따라 다릅니다. – deceze

+0

OP 질문의 두 번째 부분 때문에이 응답이 전반적인 질문의 의도에 가장 잘 응답한다고 생각합니다. – overslacked

+0

을 참조하십시오. ($ _ SESSION [ 'userName'] == "admin) {// 관리자를위한 일} else {// 나머지 일} IT는 userName 세션 변수를 위조/도용하는 방법입니까? 왜 아무도 이것에 대해 말하지 않습니까? –

7

세션은 파일이나 메모리에 서버에 저장됩니다. 사용자는 서버의 세션 데이터에 대한 경로 (일반적으로 어떤 형식의 해시)를 정의하는 쿠키 만 보유합니다. 이론적으로 쿠키를 다른 사람의 해시로 변경할 수는 있지만 파일로 저장하지 않고 만료 후에 삭제하지 않으면 이전 세션을 악용 할 가능성이 커집니다.

+0

수십억 건의 거래를 통해 적용될 때 매우 쉽지는 않을 것입니다. 매우 쉽게 걱정할 가치가있는 것이 될 수 있습니다. 물론 OP의 규모에 대해서는 잘 모르겠지만 고려해야 할 사항입니다. – overslacked

0

서버에 세션 데이터를 저장하지 않으려면 세션에 저장하기 전에 변경 사항으로부터 보호하려는 콘텐츠를 sign 수 있으며 세션에서 검색 한 직후에 유효성을 검사 할 수 있습니다. PHP에서이 프로세스는 reasonable simple이며 서버 저장 영역 문제를 해결합니다.

세션 데이터가 시각화되지 않도록 보호하지 못합니다. 이 보호가 필요한 경우에도 안전한 암호화를 사용하여 서버 저장 영역을 피할 수 있습니다. 가까운 장래에 키 크기에 기반한 거의 모든 암호화 체계가 손상 될 수 있다는 점을 명심하십시오. 따라서 5 년 동안 세션 데이터를 보호해야하는 경우 키와 알고리즘을 안전하게 선택하면 성능 문제가 발생할 수 있습니다.

관련 문제