2012-03-13 1 views
0

사용자가 도시/위치별로 검색 할 수있는 내 search.php 페이지에서 JQuery/AJAX를 통해 search_data.php 페이지로 검색하고 결과는 search.php에 반환됩니다.PHP로 Jquery/AJAX 요청을 보호하기위한 보안 구멍이 있습니까?

지금이 내가 뭘하는지입니다 :

$_SESSION['verid'] = randomid(12); 
$_SESSION['verkey'] == randomid(12); 

randomid 12 개 임의의 문자를 생성하는 기능입니다 :이이 search.php에. 그것은 사람을이 방법

if ($_POST['vuid'] != $_SESSION['verid']) { 
    header('Location: http://mysite.com/'); 
    die(); 
} else { 
if ($_POST['vukid'] != $_SESSION['verkey']) { 
    header('Location: http://mysite.com/'); 
    die(); 
} else { 
//both keys correct. process Jquery data. 
} 

중지 할 것 :이 두 세션 변수 나는이 한 search_data.php

("VUID"와 "vukid"라는 이름의) 자바 스크립트 변수로 JQuery와 $.post 요청과 함께 전송됩니다 수동으로 탐색하여 search_data.php 악의적 인 일을하려고합니다 (제 생각에는?) Jquery 만 액세스 할 수 있습니다.

제 질문은, 여기에 "구멍"이 있습니까? 이런 종류의 웹 페이지를 보호하는 좋은 방법입니까?

+1

클라이언트는 사용자가 자바 스크립트로 액세스 할 수있는 모든 항목에 액세스 할 수 있습니다. 자바 스크립트를 사용하여 세션 변수를 얻고 전달하면 클라이언트도 그렇게 할 수 있습니다. PHP로 설정된 세션 변수를 찾고 있다면, 클라이언트는 같은 세션 변수를 가진 페이지에서 서버로 요청을 보낼 수 있습니다. 그들은 세션 변수를 인식 할 필요조차 없습니다. 이 경우 사용자가 다른 도메인의 서버 측 코드를 사용하여 .php 파일에 게시 할 수 없습니다. 그들은 여전히 ​​귀하의 도메인에서 그것을 할 수 있습니다. –

답변

3

누구든지 모든 HTTP 요청을 시뮬레이트 할 수 있으므로이 방법은 신뢰할 수 없습니다. 이 경우 그는 세션을 시작하고 PHP 스크립트가 반환 한 쿠키를 저장하고 첫 번째 요청에서 얻은 쿠키와 검증 키를 따라 전달하는 두 번째 HTTP 요청을 위조하기 위해 다시 사용할 수있는 첫 번째 HTTP 요청을 위조 할 수 있습니다.

+0

이것은 나를 슬프게하지만 좋은 정보를 주셔서 감사합니다. – Norse

1

어떤 종류의 악의적 인 것들입니까? 데이터베이스에 대한 search_data.php 링크를 추측하고 있습니까? 필요한 스크립트를 최소한의 액세스로 보호하는 것이 좋습니다. search_data.php에서 테이블에 대한 읽기 액세스 권한 만 있고 보안 위협을 최소화하는 데이터베이스 사용자를 사용할 수 있습니다.

결론은 악의적 인 사용자가 페이지 및 리소스를 보호해야 할 가능성이 커질 가능성이 높습니다.

OWASP은 잠재적 인 보안 위협을 파악하고이를 완화하는 데 유용한 리소스입니다.

+0

예, 데이터베이스에 연결되지만 읽기 전용 권한이 있습니다. 나는이 링크를 확인해 볼 것이다. – Norse

+0

@ user1093634 - 특히 https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet를 확인하십시오. 읽기 전용 계정을 사용하고 있기 때문에 민감한 데이터를 볼 수 있다는 점을 제외하면 데이터베이스 관점의 위협은 훨씬 낮습니다 (가능성이있는 경우). 민감한 데이터가 없다면 잠재적 인 위협이 훨씬 적습니다. –

관련 문제