2012-03-08 2 views
1

내 인덱스 페이지 (index.php? profile = profilename_here)는 jQuery의 load() 함수를 사용하여 div에 컨텐츠를로드하고 정상적으로 작동합니다.페이지가 jQuery의 .load 함수로로드 될 때 PHP 보호하기

$().ready(function() { 
    $('#details').load('pages/sidebar/details.php?profile=<?PHP echo $profile;?>').fadeIn(2000); 
}); 

내 페이지/사이드 바/details.php에 MySQL 쿼리가 있습니다.

$result = mysql_query("SELECT * FROM public_profile WHERE username='$profile'") or die(mysql_error()); 

모든 PHP는 물건은 안전하고 내가해야 모든이 varibales 살균하고 ....하지만 누군가가 '페이지/사이드/details.php? 프로필 ='로 이동하여 프로필을 변경했다 경우 그들은 다른 사람들의 세부 사항을 불러올 것입니다.

페이지가 .load()에 의해로드되었는지 확인할 수 있으며 그렇지 않은 경우 페이지로드 또는 스크립트 실행을 중지 할 수 있습니까?

+0

어쩌면 세션을 사용하여 details.php가 프로필의 소유자로 인증되었는지 알 수 있습니까? – Damp

+0

이들은 공개 페이지이며 아무도이 세부 정보를 가지고 로그인하지 않았습니다 –

+2

프로필이 공개되어 있고 로그인 할 필요가 없다면 다른 프로필을 가져 오는 것이 왜 중요합니까? – jprofitt

답변

3

페이지가 아약스를 사용

if ($_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest') { 
    /* run this if requested by ajax */ 
} 

으로 요청되는 경우에만 코드를 실행하려면 불행하게도이하지 않습니다 훨씬 더 안전한 아무도에서 해당 URL을 변경 불을 지르고 같은 DEV-도구를 사용할 수 있기 때문에 코드. 현재 사용자가 자신의 프로파일을 보길 원하면 $profile$_SESSION에 저장하면 URL 매개 변수에 직접 액세스 할 수 없습니다.

데이터를 살균하는 몇 가지 방법에 대해서는 OWASP's SQL Injection Prevention Cheatsheet을 확인하십시오. PHP와 관련된 것은 아무것도 없다고 생각합니다.

+0

확인. 당신의 도움을 주셔서 감사합니다. 위의 코드는 내 질문을 설명하기 위해서만 추가되었습니다. 나는 실제 코드가 소독되고 안전하다는 것을 확신한다. –

+0

그냥 안전하기 위해 OWASP의 SQL 주입 방지 치트 시트에 대한 링크를 추가했습니다. 누군가가 도움을 얻을 것이라고 확신합니다 ... – JKirchartz

관련 문제