2011-11-28 5 views
2

$_POST & $_GET에 보안 문제가 있는지 궁금합니다. 의는 PHP 파일 이름은 사용자가 단지 delete.php?id=423&name=Jack 같은 것을 쓸 수 있으며 것 delete.php라고하자 이제

if(isset($_POST['id'])) { 
    $client_id = mysql_real_escape_string($_POST['id']); 
    $client_name = mysql_real_escape_string($_POST['name']); 

    //Delete the Client 
    $sql="DELETE FROM clients WHERE id='".$client_id."'"; 
    mysql_query($sql) or die(mysql_error()); 

    //Client Pages Delete 
    $sql="DELETE FROM fanpages WHERE client='".$client_name."'"; 
    mysql_query($sql) or die(mysql_error()); 

:

의 내가 다음과 같이 PHP 파일에 데이터를 보내는 AJAX 코드가 있다고 가정 해 봅시다 질의하고 클라이언트를 삭제 하시겠습니까?

처음에는 COOKIE 수표를 추가 할 생각 이었지만 COOKIE도 위조 될 수 있다는 것을 알고 있습니다. 맞습니까?

그럼 보안을위한 솔루션은 무엇입니까 $_POST & $_GET DB quires의 조합으로 요청 하시겠습니까?

편집 :이 모든 사용자 암호 보안 영역의 내부에 발생하지만 유일한 delete.php 파일에 대한 부탁 해요, 난이이 파일에 COOKIE 검사를 추가해야합니까?

EDIT2 : 스크립트는 COOKIE의 세션이 아니므로 시스템에 세션을 추가해야합니까? 같은 시스템에 쿠키와 세션이 있어야합니까?

+0

등, 세션 경로가 개인이고 당신은 사람들이 당신의 세션을 가로 채 두지 않을 있는지 확인해야합니다. 당신이 이것을 가지고 있지 않다면, 누군가는 단순히 당신이 말했던 것처럼 URL을 입력하고 변경을 실행할 수 있습니다. 사이트에 코드, 세션, 암호 등이 있어야합니다. 이렇게하면 보안이 강화됩니다. – OptimusCrime

+0

자신 만의 가져 오기와 올리기를 쉽게 만들 수 있습니다. 게시물을 수정하는 것은 어렵지 않지만 get을 사용하는 것보다 분명히 어렵습니다. PDO는 SQL 주입을 중지 할 수 있지만 특정 쿼리를 수행 할 권한이 있는지 여부를 확인해야합니다. 따라서 사용자가 실제로 해당 쿼리를 실행할 수 있는지 확인해야합니다. – Matt

+0

보안이 필요한 각 파일에 세션 검사를 추가해야합니다. –

답변

2

트릭은 데이터를 올바르게 벗어나서 SQL injections을 방지하는 것입니다. 사용자 삭제와 관련하여 추가 안전성을 원한다면 로그인 또는 무언가를 요구할 수 있습니다.

session_start(); 

// ... 

if (true === $_SESSION['userLoggedIn']) { 
    // your code 
} 

물론 로그인 양식을 제출하면 인증 절차가 필요합니다.

Here is a great example!

+0

EDIT2를 참조하십시오. COOKIE와도 안전할까요, 아니면 세션 승인을 할 의향이 있습니까? – Ricardo

+0

정말로 원하신다면 쿠키를 사용할 수 있습니다. 인증 프로세스는 거의 동일 할 것이고, 더 이상'session_start()'가 필요 없으며'$ _SESSION'에서 값을 설정하는 대신에 사용자가 인증 된 후에'setcookie()'를 사용할 것입니다. –

+0

들었습니다. 쿠키가 위조 될 수 있다는 것이 사실입니까? – Ricardo

1

당신은 그런 sensative 요청을 발행하는 클라이언트 로그인 허용해야한다 (예를 들어 MySQL 데이터베이스를 쿼리하고 사용자의 테이블에 대해 사용자 이름과 암호를 테스트). 세션 사용 파일의 시작 부분에서 session_start();

비어있는 경우 $ _SESSION [ "username"]을 (를) 확인하고 삭제하지 않지만 사용자 이름이 있으면 (로그인시 설정) 사용자를 확인합니다. 이 작업을 수행 할 수있는 권한이 있습니다.

+0

스크립트가 COOKIE의 세션이 아니므로 시스템에 세션을 추가해야합니까? 같은 시스템에 쿠키와 세션이 있어야합니까? – Ricardo

+1

세션을 사용하면 실제 데이터가 서버에 남으며 (세션 ID 만 쿠키에 있음) 위장 할 수 없지만 쿠키 데이터는 위장 할 수있는 클라이언트 시스템에 저장됩니다. –

1

이 스레드는 세션을 목표로 설정되어 있지만 현재 귀하의 쿠키가 안전하지 않을 것으로 예상됩니다. 쿠키를 훔쳐 가기 쉽습니다. 당신은 세션을 수행해야합니다,하지만 당신은 당신은 인증의 일종을해야

PHP Session Security