2010-04-22 5 views
9

보안을 위해 세션 쿠키를 사용하는 웹 사이트가 있습니다. 그것은 잘 작동하지만 모든 아약스 요청은 안전하지 않습니다. 예를 들어 사용자가 페이지에 있다고 말할 수 있습니다. 그들이 세션과 함께 로그인 한 경우에만이 페이지로 이동할 수 있습니다. 다른 사용자는 단지 그들이 여전히 사람들 로그인 의미 된 것과 동일한 아약스 출력을 얻을 (세션없이) 링크 자체로 이동하기로 결정하면되지만 지금은 요청 아약스 요청ajax 요청 보안

ajaxpages/somepage.php?somevar=something&anothervar=something 

입니다.

분명히 내가 아약스 요청을 보낼 때 세션 데이터를 전달해야 할 것입니다. 누구든지이 일을하는 가장 좋은 방법에 대한 조언을 갖고 있습니까? 필자는 전에 이런 짓을 한 적이 없으며 오히려 신뢰할 수있는 방법을 사용하여 내 자신 만의 방식으로 만들 것입니다.

답변

5

아약스 요청은 웹 사이트에 대한 다른 요청처럼 작동하며 비 아약스 요청과 동일한 세션 쿠키를 반환해야합니다. 이것은 this question에 지적되어 있습니다. 당신이 세션 쿠키를 얻지 못한다면 아마도 다른 것이 틀릴 것입니다.

+0

나는 도움이 필요합니다, 중복 코멘트를 피하십시오. Rook의 의견을 참조하십시오. XD thanks kibbee –

2

아약스 요청을 처리하는 페이지에서 동일한 보안 검사를 사용하십시오.

2

PHP 페이지이므로 PHP 쪽에서 인증을 수행 할 수없는 이유가 없습니다. 인증에 성공하면 데이터를 다시 전송하십시오. 그렇지 않으면 오류 메시지를 다시 보냅니다. AJAX는 다른 요청과 크게 다르지 않습니다.

4

ajax 출력을 갖는 것이 반드시 취약점은 아닙니다. 그것은 전적으로 어떤 데이터가 전송되는지에 달려 있습니다. 어떤 플랫폼을 사용하고 있는지 잘 모르겠지만 대부분의 웹 응용 프로그램 개발 플랫폼에는 요청간에 상태를 유지할 수있는 세션 변수가 있습니다.

당신은 이어야합니다.은 사용자를 서버 측에서 로그인 한 것으로 표시해야합니다. 그것을 설정되지 않은 변수도 거짓이면 (

if(!$_SESSION['logged_in']){ 
    header("location: http://127.0.0.1/"); 
    die(); 
} 

:가 페이지에 액세스 할 수있는 경우 헤더 파일에서 확인하실 수 있습니다 그리고

if(login($user,$password)){ 
    $_SESSION['logged_in']=true; 
} 

: 내가 좋아하는이 보일 것이다 PHP는)

명심해야 할 몇 가지 사항이 있습니다. 이 취약점이다 : 사용자는 $ _COOKIE을 제어 할 수 있습니다

if(!$_COOKIE['logged_in']){ 
    header("location: http://127.0.0.1/"); 
    die(); 
} 

, 그래서 그들은 로그인했는지 말할 수

또 다른 취약점 :.

if(!$_COOKIE['logged_in']){ 
    header("location: http://127.0.0.1/"); 
} 

헤더()하지 않습니다 스크립트를 죽이십시오. 실제로는 여전히 실행 중이므로 계속 출력되지만 브라우저에 표시되지는 않지만 netcat/telnet/wireshark를 사용하여 데이터를 볼 수는 있습니다.

+0

여기에 질문이 있습니다. 새로운 SO 질문을 작성하는 것이 필요하다고 생각하지 않습니다. XD는 보통 exit를 사용합니다. 이 경우에는 더 나은 다이 사용 또는 더 나은 종료? 내가 읽을만한 추천이 있니? 다이와 출구의 차이점. 감사. 그리고 하나만 더, 혼란 스럽네요. 사용자 만 로그인했으면 xss에 취약한가요? 누구든지 xss 사이트에 로그인 한 사용자를 속여 데이터를 얻을 수 있기 때문입니다. 또는 나는 xss에 대해 완전히 잘못되었습니다.다시 고마워. Rook XD –

+0

@ Tian Loon 나는 당신이 무엇을 요구하고 있는지 전혀 모른다. 왜 다이와 출구가 다른가요? 또는 에코와 인쇄 사이에 있습니까? 예, xss를 사용하여 세션을 하이재킹 할 수 있습니다. 내 게시물은 xss와 아무 관련이 없습니다. – rook

+0

oops. 고마워, 난 그냥 http://stackoverflow.com/a/1795031/805373 죽을 설명하고 출구가 동일합니다. 그것을 얻으십시오. 감사 ROok –