2016-06-10 2 views
1

PHP, JQuery 및 AJAX를 사용하여 사용자 인증 시스템을 만들고 있습니다. 제출시, AJAX를 사용하여 username & password 데이터가 포함 된 'authenticate.php'로 요청이 전송됩니다. PHP 코드는 데이터베이스에서 레코드를 검사하고 success에 0을, failure에 1을 반환합니다. 반환 값이 0이면 페이지는 'window.location="user.php"'을 사용하여 '사용자 개인 페이지'로 리디렉션됩니다.인증에서 jQuery와 AJAX를 사용하여 페이지를 리디렉션하는 것이 안전합니까?

이제 질문은 안전하고 적절한 방법으로 인증하는 것입니까? jQuery/JavaScript를 사용하여 페이지를 리디렉션하는 데 보안 문제가 있습니까?

+0

ajax를 사용하여 사용자를 인증하는 경우 'window.location'을 사용하여 사용자를 리디렉션하면 아무런 문제가 없습니다. – Poonam

답변

0

PHP로 작업 중이므로 이미 JS를 사용하여 사용자를 리디렉션하지 않는 것이 좋습니다. 당신은 그것을 위해 PHP를 사용할 수 있습니다 사람들이 user.php 페이지로 직접 이동하는 경우

if(isset($_SESSION['logged_in'] && $_SESSION['logged_in'] == true){ 
    echo 'welcome to the user page'; 
}else{ 
    header('location:index.php');//Go back to login page 
} 

, 그들은의 index.php 페이지로 리디렉션됩니다 : 당신의 user.php 파일에 다음

if($user == $db['user'] && $password == $db['password']){ 
    $_SESSION['logged_in'] = true; 
    header('location:user.php'); 
}else{ 
    echo 'username of password is wrong'; 
} 

.

+0

고맙습니다. 제가 말씀 드렸듯이 계속해서 문제를 설명해 주시겠습니까? – Hari

+0

나는 내 게시물을 편집 했으므로 필요한 모든 것을 제공합니다. – Saypontigohe

0

이제 질문은 안전하고 적절한 인증 방법입니까?

만 사용자가 성공적으로 이미 인증 된 경우가 user.php 다시을 확인 내부 경우. (일반적으로 세션이 시작되는 곳입니다.)

그렇지 않으면 물론 URL이 user.php 인 사람은 누구나 직접 액세스 할 수 있습니다.

jquery/js를 사용하여 페이지를 리디렉션하는 데 보안 문제가 있습니까?

window.location="user.php" 사이의 유일한 차이는 -, 말, 해당 페이지, <a href="user.php">foo</a>에 정상 링크 (BTW, 잘못된 것입니다. 정확한는 window.location.href="user.php" 될 것이다)와, 첫 번째는 자동으로 발생한다는 것입니다, 그리고 두 번째는 것 먼저 사용자가 링크를 클릭해야합니다.

따라서 간단한 링크를 사용하는 것처럼 "안전"합니다. 이 경우에 실제로 의미하는 것은 위에서 말한 것에 달려 있습니다.

+0

'user.php'에서 세션을 사용하고 사용자가 로그인했는지 확인하면 고맙습니다. 'window.location'이 나를 위해 일 했어. 'window.location.href'로 바꿔야합니까? – Hari

+0

_ "세션을 사용하고 사용자가 로그인했는지 여부를 확인하면 보안 방법은 무엇입니까?"- 그 방법은 구현 방법에 따라 다릅니다. 그러나 이것은 매우 광범위합니다. 로그인 시스템을 개발하기위한 일반적인 보안 고려 사항은 독자가 직접 읽어야합니다. _ "과"window.location "이 나를 위해 일했습니다. 나는 그것을 'window.location.href'로 변경해야합니까? "_ 브라우저가 자동으로이 일반적인 오류를 수정하기 때문에 작동합니다. 그리고 네. – CBroe

0

응용 프로그램의 보안 성 및 보안성에 따라 다릅니다. RFC에 따르면 그렇게 로그인하지 말고 서버 측에서 양식을 유지하고 (iframe을 통해) 프론트 엔드에 로그인 양식을 통합 한 다음 리다이렉트 URL과 토큰, 범위 등을 로컬 HTML로 리다이렉트한다. 프론트 엔드 애플리케이션에 창 postmessage를 보냅니다.

https://tools.ietf.org/html/rfc6749#page-19

당신은 당신이 window.location.href 또는 document.location.href 갈 수 신속하고 더러운 싶은 경우

.

또는 보안 수준이 조금 더 높아서 서버로 사용자를 보내면 다시 리디렉션 될 수 있지만 리디렉션 지옥에서는 사용자가 있던 상태로 돌아가는 것이 쉽지 않기 때문에 (설정 및 내용 포함)).

어쨌든 서버 사이드 (세션)로 수행하는 작업에 관계없이 현재 사용자의 세션 상태를 항상 확인해야합니다.

관련 문제