2011-04-25 6 views
2

나는 AJAX를 사용하는 웹 사이트를 디자인했습니다. POST 메서드에 의해 전송 된 데이터를 받아 들여 데이터베이스에 저장하는 store.php라는 PHP 페이지가 있습니다.AJAX 호출을 인증하는 방법은 무엇입니까?

어떻게 인증을 store.php에 구현합니까? 나는 내 사이트에 로그인 한 사용자 만 store.php를 사용하기를 원합니다.

현재 htaccess를 사용하여 store.php에 대한 요청을 리디렉션하고 있지만 좋은 해결책이라고 생각하지 않습니다.

+1

웹 사이트의 인증에 현재 사용하고있는 것은 무엇입니까? –

+0

사용자 이름/암호 기반 인증. 유효한 일치가 있으면 $ _SESSION을 사용하여 사용자가 로그인했는지 여부를 확인하는 일부 값을 저장합니다. – Cracker

+1

Ajax 요청에서도 세션이 전송되므로 기본적인 규칙은 Ajax 요청이 정상적인 (웹 페이지) 요청을 허용하도록 허용하면 꽤 안전하다는 것입니다. –

답변

1

서버 스크립트에 대한 AJAX 호출에는 여전히 세션 ID가 요청에 포함됩니다. 사이트에 세션을 구현하는 경우 세션을 시작하면 현재 로그인 한 사용자의 세션 변수를 볼 수 있습니다.

0

Ajax 요청의 보안은 간단한 문제가 아닙니다. 그들은 man-in-the-middle 공격과 재생 공격에 취약 할 수 있습니다. 이 책을 읽는 것이 좋습니다 : http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939. 그것은 주제에 대한 좋은 정보를 많이 줄 것입니다.

PHP 세션이 설정되면 세션 쿠키가 Ajax 요청에도 적용됩니다.

1

저장소 데이터베이스의 사용자와 연결된 토큰. 토큰이 고유하고 추측 할 수 없는지 확인하십시오. 또한 숨겨진 양식 필드에 동일한 토큰을 저장하여 페이지에 다시 게시되도록하십시오. 게시 된 양식 값에 토큰이 있는지 서버에서 확인하고 유효한지 확인하십시오.

+0

Jeff Lambert의 대답이 정확하다는 점에 유의하십시오. 여기 내 대답에 제시된 제안은 기술적으로는 정확하지만 가능한 경우 자체 보안을 구현하지 않는 것이 좋습니다. 그냥 기본 세션 보안을 사용하십시오. – KyleM

0

나는 보통 ajax-called 페이지의 나머지 사이트에서 인증하는 데 사용하는 코드와 정확히 똑같은 코드를 포함시킵니다. SESSION을 사용하여 sessionID를 보유하고 나머지는 내 DB에서 처리합니다. 나는 보통 다음과 같은 라인을 추가합니다.

require_once('loginProcedures.php'); 
//Login Authentication takes place here using SESSION ID 

if (!$me['validLogin']) die("Invalid Authentication"); 

//perform actions and echo your result for a valid login. 
관련 문제