세션은 쿠키보다 훨씬 안전합니다. 그러나 세션을 도용 할 수 있으므로 해커는 해당 세션에있는 모든 항목에 대한 전체 액세스 권한을 갖습니다. 이것을 피할 수있는 몇 가지 방법은 IP Checking (매우 잘 작동하지만 매우 낮기 때문에 자체적으로 신뢰할 수는 없습니다)과 nonce를 사용하는 것입니다. 일반적으로 nonce를 사용하면 각 페이지가 마지막 페이지의 nonce가 저장 한 내용과 일치하는지 확인하는 페이지 당 "토큰"을 갖게됩니다.
어느 보안 검사에서도 사용성이 떨어집니다. IP 검사를하고 해당 사용자가 고정 IP를 보유하지 않는 인트라넷 방화벽 (또는이 문제를 일으키는 다른 상황)에 노출 된 경우 IP를 잃을 때마다 다시 인증을 받아야합니다. 논스를 사용하면 항상 "클릭하면이 페이지가 중단됩니다"라는 재미를 얻을 수 있습니다.
그러나 쿠키를 사용하면 해커가 간단하게 XSS 기술을 사용하여 세션을 도용 할 수 있습니다. 사용자의 세션 ID를 쿠키로 저장하면이 세션 ID도 취약합니다. 따라서 세션이 서버 수준의 해킹을 수행 할 수있는 사람에게만 침투 할 수 있다고하더라도 (서버가 안전하다면 훨씬 더 정교한 방법과 보통 어느 정도의 권한이 필요합니다.), 당신은 여전히 추가적인 검증 레벨이 필요합니다 각 스크립트 요청시. 쿠키와 AJAX를 함께 사용해서는 안됩니다. 쿠키를 도난 당하면 마을로가는 것이 훨씬 쉽습니다. 왜냐하면 아약스 요청은 각 요청에 대해 보안 검사를받지 못할 수 있기 때문입니다. 예를 들어, 페이지가 nonce를 사용하지만 페이지가 다시로드되지 않으면 스크립트는 해당 일치 항목 만 검사 할 수 있습니다. 그리고 쿠키에 인증 방법이 있으면 지금 도난당한 쿠키와 AJAX 구멍을 사용하여 마을에 가서 악의적 인 행동을 할 수 있습니다.
PHP는 세션 ID를 쿠키로 저장합니다. –
+1 넌 스에 대해 더 자세히 설명해 주시겠습니까? 가능한 링크? – Petrogad
nonce에 관한 위키 기사는 꽤 가볍지 만 적절한 링크가 있습니다 : http://en.wikipedia.org/wiki/Cryptographic_nonce 기본 아이디어는 토큰과 비슷하지만 한번만 사용할 수 있습니다 (번호는 한 번 사용됨). 각 페이지 요청은 마지막 nonce를 확인하고 새 nonce를 작성합니다. 따라서 암호에 무차별 공격을 시도하면 라운드 2에서 넌 스가 일치하지 않을 것이므로 한 번만 얻을 수 있습니다. 세션과 그 페이지의 넌스를 훔치면 요청을 계속하고 넌센스를 갱신 할 때까지 당신은 넌센스 매치를 버리는 요청을합니다. 그것은 내 요청과 내 논스를 볼 것이기 때문에 ... – Anthony