문제

할 때 SQL 쿼리를 실행하고,당신은 당신의 문자열 또는 사용자 실행할 수 있는 악성 SQL 에서 당신의 웹 사이트입니다.

나는 보통 이 기능을 갖 escape_string(blah),는:

  • 대체는 이스케이프(\ 는)두 배 이스케이프(\\).
  • 대체 작은 따옴표(' 로)이 작은 따옴표(\').

이 적합한가?에 구멍이 있는 나입니까?이 있는 라이브러리는 이것을 할 수 있는 신속하고 안정적으로까요?

나보고 싶은 우아한 솔루션에서는 Perl,Java,PHP.

도움이 되었습니까?

해결책

최상의 보안을 위해,성능 및 정확성에 사용할 준비한 문입니다.를 수행하는 방법은 다음과 같은 이 예제의 많은에 포함,다른 언어로 PHP:

https://stackoverflow.com/questions/1973/what-is-the-best-way-to-avoid-sql-injection-attacks

다른 팁

또한 것 탈출 댓글(더블 dash)

--

좋은 일에서 사용하 PHP PDO.그것은 많은 추측을 다루고 보안을 SQL(의 모든 SQL 재료에 일반).그것은 지원비즈니스 성장에 도움을 드릴 것입니다 이 방법으로 방해 SQL Injection Attacks.

좋은 프라이머에 PDO 에 포함된 예약 PHP 선집 101 필수적인 도움말을,트릭 및 해킹에 의해 데비 Shafik etc.2nd Ed.학습하게도 및 우수는 전문 기술을 제공합니다.내가 없어 아무것도 생각이 다른 것보다 실제 SQL 쿼리 더 이상입니다.

는 언어가 사용하고 있습니까?그것은 것 같다 꽤 많은 그들 모두가 내장된 SQL 에서 탈출하는 기능을 사용하는 것이 더 좋을 것이다.

예를 들어,PHP mysql_real_escape_stringaddslashes.

당신이 사용하여 더 나은 준비된 문의 자리 표시자와 함께.당신은 당신을 사용하여 PHP,.순...어느 방법으로,준비 계산서를 제공할 것이 더 보안,하지만 내가를 제공할 수 있었습니다.

PHP 에서,저는 이것을 사용하나 감사하겠 모든 의견에 대한 그것:

function quote_smart($valeur) 
{ 
    if (get_magic_quotes_gpc()) 
        $valeur = stripslashes($valeur); 

    if (!is_numeric($valeur)) 
        $valeur = mysql_real_escape_string($valeur); 

    return $valeur; 
}


$IdS = quote_smart($_POST['theID']); 
$sql = " 
SELECT * FROM Students 
WHERE IdStudent={$IdS}; 
";

구 한 번 더 확인하는 경우 필드 NULL 이 될 수 있습니다:

$picture = NULL;
$theidyouwant = 7;
$Name = 'WOOD';


if(is_null($picture)) 
    $p = 'NULL'; 
else
    $p = "'".quote_smart($picture)."'"; 

$IdS = quote_smart($theidyouwant);

$requete = "SELECT * FROM Students
    WHERE IdStudent={$IdS} AND
    PictureStudent={$p} AND
    NameStudent='{$Name}';
    ";

는 그것을 즐기세요!(희망 게시물을 올바르게 보내는 밑줄과하지 않_;)

사용 준비/쿼리!

사용 준비한 문입니다.

MySQL 쿼리를 사용할 경우,같은 또한 확인을 탈출하는"_"문자 그대로 탈출하지 않으로 mysql_real_escape_string.

에 대한 참조,확인

MySQL C API 는 그것의 자신의 mysql_escape_string().그것을 사용하거나 이에 상당하는 것이 최고입니다.

나는 확실하지 않는 경우 MySql 지원하는 쿼리,그렇다면,당신은 노력해야 합니다 이 경로입니다.이를 통해 사용자의 입력이 아무것도 할 수 없습니다.

그렇지 않으면 일부는"나쁜"문자가 외에 무엇을 언급한 것인 세미콜론(;)과 의견(고--/**/).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top