2009-05-19 6 views
-1

가능한 중복 :
Best way to stop SQL Injection in PHP양식/URL에서 POST/GET 변수를 살균하는 가장 좋은 방법은 무엇입니까?

내가 MySQL 데이터베이스를 사용한다하여 URL에서 형태와 변수를 처리하는 PHP를 사용하여 웹 사이트를 만드는 오전. 변수는 SQL 쿼리 문자열을 동적으로 구성하는 데 사용됩니다. 그래서 아무도 SQL 주입 등을 시도하고 있는지 확인하는 강력한 솔루션이 필요합니다. 내 친구가 정말 데이터베이스에 액세스 할 수있는 저장 프로 시저를 사용해야하지만 그것은 실제로 가능하지 않습니다 호스트 내가 사용하고 있기 때문에 말했다 이것들을 허용하지 마라. 여기

내가 사용하고 코드입니다 (이 클래스의 일부 DB 명령을 포장하는의) :이 기능이 강력한만큼

... 
public function Sanitize($Variable) 
{ 
    if(is_resource($this->ServerConnection)) 
    { 
     $Variable = str_replace(";", "", $Variable); 
     if(get_magic_quotes_gpc()) 
     { 
      if(ini_get('magic_quotes_sybase')) 
      { 
       $Variable = str_replace("''", "'", $Variable); 
      } 
      else 
      { 
       $Variable = stripslashes($Variable); 
      } 
     } 
     return mysql_real_escape_string($Variable, $this->ServerConnection); 
    } 
    else 
    { 
     $this->PrintError("The Sanitize function is not available as there is no server connection."); 
    } 
} 
... 

인가? 내가 다른 일을해야 할까?

+1

왜 매개 변수화 된 쿼리를 사용하지 않습니까? – dave4420

+0

매개 변수가있는 쿼리 란 무엇이며 이점은 무엇입니까? 어쩌면 내가 분명히 내가 SQL 데이터베이스를 오랫동안 온라인으로 사용하지 않았 음을 분명히해야합니다. –

+1

매개 변수화 된 쿼리를 수행하려면 PDO를 확인하십시오. http://php.net/pdo – rojoca

답변

2

읽을 가치가 있습니다. this post 가장 좋은 방법은 무엇

1

...

더 좋은 방법이 없다. 상황에 따라 다릅니다. POST 살균

.. /에서 변수를 GET ..

그것은 데이터가 좋거나 나쁜 생각의 결함 모드입니다. 데이터는 단지 데이터 일뿐입니다. 악의적 인 행동을하는 데 사용되는 상황입니다. 데이터베이스 서버에서 꾸밈없는 단어를 실행하면 일부 단어가 잘못 표시 될 수 있습니다. 미성년자에게 표시하면 일부 단어가 잘못 표시됩니다. 문맥에 관한 것입니다.

관련 문제