2013-01-08 6 views
3

사이트에 사용자가 로그인 할 때 로그인 한 사용자 ID를 저장해야 내 사이트가 다른 사용자에게 다른 콘텐츠를 생성 할 수 있습니다.PHP : 로그인 한 사용자 저장

사용자의 ID를 $_SESSION[] 변수에 저장하는 것이 안전합니까?

사용자가 $_SESSION[] 데이터를 변경하고 다른 사용자 인 것처럼 가장 할 수 있습니까?

ID를 사용하여 데이터베이스에서 가져와야하는 데이터를 확인하고 사용자에게 부여 된 사용 권한을 확인합니다.

+3

다른 사용자가 다른 사용자의 세션 ID를 가져올 수있는 경우에만 가능합니다. 따라서 세션 ID를 데이터베이스에 저장하려면 해시 또는 암호화해야합니다. – Kermit

+0

누군가 다른 사람이 될 수는 없지만 정보를 얻는다면 해시 할 것입니다. (세션에서 저장되었지만 다른 세션으로 변경하기가 어려울 것입니다.) – Skatox

+0

사용자가 세션 데이터를 변경할 수 없습니다. 사용자가 세션 ID를 납치하여 해당 세션과 관련된 사용자 인 것처럼 가장 할 수 있습니다. – Crisp

답변

4

세션에서 사용자 ID를 저장하는 것이 가장 좋습니다.

세션은 기본적으로 파일로 /tmp에 저장됩니다. directory traversal과 같은 보안 문제가없는 한 최종 사용자가 볼 수 없습니다. 대부분의 응용 프로그램은 그대로 $_SESSION을 사용합니다. 광범위한 확산 약점이 있다면 주요 프로젝트는 일을 다르게 할 것입니다. 클라이언트 측 익스플로잇을 통해 얻은 서버 측 세션 값에 대해 걱정할 필요가 없습니다. 또한 세션을 사용하는 단순성을 명심하십시오. 이를 통해 사용자 별 데이터에 대한 데이터 액세스가 가능 해져 애플리케이션 전반에 걸쳐 지속적으로, 표준 및 일관성있게 액세스해야합니다.

+0

저장하고 싶은 데이터를 저장하는 간단한 방법은 안전합니다. :) –

+1

+1. '$ _SESSION' 시스템의 요점은 이러한 종류의 데이터를 저장하는 것입니다. 그것은 다른 모든 사람들이하는 방식이며, 당신이해야하는 일입니다. 주의해야 할 몇 가지주의 사항이 있습니다 (예 :'/ tmp'는 호스팅 회사가 보안에 부주의 한 경우 공유 호스트의 다른 사이트 소유자가 액세스 할 수 있습니다). 일반적으로'$ _SESSION'은 안전하고 안전합니다 다른 무엇보다도 당신은 사용을 생각할 수 있습니다. 정말 걱정이된다면 Suhosin과 같은 확장 기능을 사용하여 백그라운드에서 세션 데이터를 암호화하십시오 (많은 호스팅 회사는 기본적으로 Suhosin을 사용합니다). – SDC

관련 문제