2013-04-25 2 views
0

PHP에서 사용자 지정 백엔드 사용자 정의 컨트롤 패널을 만드는 중입니다.PHP 사용자 지정 인증 방법

사용자 인증을 관리하는 가장 좋은 방법에 대한 조언을 구합니다. 내 자신의 사용자 정의 등록 및 로그인 시스템을 작성했습니다 (서버 기반 인증을 사용하지 않으려합니다). 내 계획은 일단 사용자가 인증되면 세션 변수를 설정 한 다음이 변수를 사용하여 액세스를 허용/거부합니다.

정확한 접근 방법인가, 안전하지 않은가, 분명히 인증을 통과하지 못하도록하려는 사용자 및 유효한 사용자 인 경우 특정 사용자, 예를 들어 사용자를 제한 할 수 있기를 원합니다. 4는 사용자 1,2 또는 3의 개인 데이터를 보지 않아야합니다.

PHP 세션 변수를 가면/트릭/치트리는 것이 얼마나 쉬운가요?

+0

* 서버 기반 인증을 사용하지 않으려합니다 * - Apache 기반 HTTP 인증을 언급합니까? 그렇지 않으면 성명서는 의미가 없습니다 (클라이언트 기반 인증이란 무엇입니까?) –

답변

3

세션은 서버에 저장된 데이터가있는 변수입니다. 모든 세션에는 쿠키를 세션 (저장된 데이터)에 연결하는 고유 식별자가 있습니다. 이 식별자를 가지고 있지 않으면 세션을 요청할 수 없습니다.

유일한 안전 문제는 쿠키가 도용 될 수 있다는 것입니다. 보안을 강화하려면 IP 주소를 확인해야합니다.

If($Login === true) 
    $Session['userData'] = array("IP" => "11.11.11.11", "UserID" => "5"); 

다음 확인이 있어야합니다 : 예를 들어

if($_SESSION['userData']['IP'] == $_SERVER['REMOTE_HOST']) { 
    /* do you checks and stuff. */ 
} else { 
    die("Session does not belong to you!"); 
} 

당신은 세션 쿠키를 납치하는 것은 거의 불가능 인 IP를 확인합니까 (또는 당신이에해야 할 때 동일한 네트워크 및 물건)

+0

IP 확인을 수행하면 특정 프록시 또는로드 밸런서로부터의 액세스도 차단됩니다. –

+0

감사합니다. 쿠키가 설정되어 있다는 것을 알지 못했습니다.이 경우 특정 머신/장치에만 적용된다는 것을 분명히 알 수 있지만 IP 체크 아이디어가 매우 간단하고 효과적입니다. –

0

PHP 세션은 각 사용자가 로그인 할 때 고유 한 ID를 제공하도록 만들어졌습니다. 따라서 세션을 생성하면 로그인 한 각 사용자마다 다른 세션 값이 생성됩니다. 세션이 겹칠 가능성은 없습니다.