2013-05-20 1 views
0

나는 같은 form.php 느릅 나무 액션 호출 sql.php 파일이 있습니다방지 직접 액세스

SQL.PHP을

if ($_REQUEST['action'] == "add") { 
} 
if ($_REQUEST['action'] == "edit") { 
} 

나는 때문에 사용자가 할 수있는, 직접 액세스를 방지하고자 해요 브라우저 URL에서 전화 : http://sql.php?action=add 한 가지 방법은 제출 여부를 확인하는 것입니다. 잘 작동하는 것 같습니다.

if(isset($_POST['Submit']) && ($_POST['Submit'] == "Submit")) 
{ 
echo "direct access not allowed"; 
} 

더 좋은 대안이 있습니까?

+3

당신은 그것을 막을 수 없습니다 – zerkms

+1

쉬운 답변 : 양식에 토큰을 추가하십시오. – Class

+0

Hello Class, 토큰을 추가하는 방법, 참조 또는 예제가 있습니까? – user2307958

답변

0

$_SERVER['HTTP_REFERER'] 어레이를 사용하면 다른 사람이 브라우저에 직접 입력하거나 페이지의 다른 페이지를 방문하여 페이지의 링크를 사용하여 페이지에 직접 액세스하는지 검색 할 수 있습니다.

기본적으로.

if($_SERVER['HTTP_REFERER'] == 'about.php'){ 
//let user do something 
} 

따라서, 페이지의 $_SERVER['HTTP_REFERER'] 글로벌 정보를 저장 당신이 방문하고 해당 코드 에코 배치하면, 귀하의 페이지에, 당신이에서 오는하는 페이지에서 당신을 말할 것이다. 즉, 페이지를 입력하고 액세스 한 경우 0/false 값이 표시됩니다.

그래서 누군가가 직접 페이지를 타이핑하거나 페이지 중 하나에서 왔는지 감지 할 수 있습니다. 이 방법은 조작 할 수 있기 때문에


다른 사람들이 토큰을 사용하여, 이미 지적했듯이

및 세션은 더 좋은 생각이 될 것입니다. 그래서 나는 그들을 내쫓을 것을 추천한다.

+0

참조자가 쉽게 시작할 수 있습니다 스푸핑 될 수있다. – j08691

+0

@ j08691 그에게도 세션을 추천 할 수는 있겠지만 뉴비에게는 기본적인/좋은 선택이 될 것입니다. 하지만 세션에 대해 언급하겠습니다. –

0

그것은 if(!isset($_POST['Submit'])이어야한다. 또한 method="POST"을 사용하는 경우 브라우저에서 ?action=add과 같은 매개 변수를 전달하지 않습니다. method="GET".