2016-07-06 4 views
0

자동 SQL 삽입 방지 PHP 라이브러리가 있습니까? 마치 사이트의 코드를 계속 실행하기 전에 GET, POST 및 들어오는 매개 변수를 확인하고 가능한 SQL 공격 시그니처를 확인하십시오. 예처럼자동 SQL 삽입 방지 PHP 라이브러리

: http://www.example.com/index.php?page_id= ')//연합//모든//선택//NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -/**/uHkS

위의 URL GET 매개 변수에 SQL 구문을 전달했습니다. PHP 라이브러리는 GET 및 POST 매개 변수를 확인한 후 프로젝트 코드가 실행되기 전에 SQL 공격이 포함되면 요청이 즉시 존재합니다. 예외 메시지 .

+2

준비된 문을 사용하여 SQL 주입을 방지 할 수 있습니다. – Jens

+0

[PDO] (http://php.net/manual/en/book.pdo.php) 및 [준비된 문구] (http://php.net /manual/en/pdo.prepared-statements.php) –

+0

저장 프로 시저는 SQL injections에 대해서도 매우 권장됩니다. – rhazen

답변

0

다른 의견으로 작성되었습니다 : 요청을 통해 데이터베이스에 대한 공격을 자동으로 탐지하는 라이브러리가 없습니다.

데이터베이스 작업에 위협을 줄 수있는 데이터가 들어오는 경우 즉시 요청을 취소하는 것이 좋습니다.

입력 이름이있는 일반 양식을 사용하십시오. 그의 이름은 Brian O'Connor ... 글쎄, 그는 당신의 프로그램을 사용할 수 없을 것 같습니다.

사용자가 데이터베이스를 엉망으로 만들고 싶다면 라이브러리에 의미 론적 검사가 있어야합니다. 이 의미 론적 검사를 수행하기 위해 라이브러리는 실제로 어떤 종류의 데이터가 실제로 필요한지를 알아야합니다. 위에서 언급 한 예에서 이름을 기대할 때 "drop table"은 입력을 원하지 않을 수 있지만 모든 입력에 대해 원하는 규칙을 정의하는 데 많은 오버 헤드가 발생합니다.

준비된 명령문이나 데이터베이스 api의 이스케이프/인용 기능을 사용하여 항상 사용자 데이터를 올바르게 처리하는 경우 누군가 테이블에 이상한 데이터를 갖게됩니다 (실제로 누군가 SQL을 삽입하려고 시도하면). 그건 내가 너를 해치지 않을거야.

-2

PDO 또는 Prepared Statements을 사용하거나 서버 측 스크립트의 끝에 POST 또는 GET 데이터를 살균 수로 데이터베이스의 말에 할 수있는 일이 있습니다.

$safe_data=filter_input(INPUT_GET, 'comment', FILTER_SANITIZE_SPECIAL_CHARS); 

이 기능은 한 번에 하나의 GET 매개 변수에 작동하기 때문에, 새로운 배열을 만들기 위해 함수를 작성 할 수 있습니다 (예를 들어 $SAFE_GET) 한 번에 모두 소독하라고 GET 매개 변수를 통해하는 반복하고 .

은 다른 방법은 HTML의 안전을 위해 모든 입력 살균에 기본값으로 php.ini 파일의 지시어를 설정할 수 있습니다 : 그 살균 수 PHP 라이브러리가 있다고 생각하지 않습니다

filter.default="special_chars" 

을; 당신은 당신이 당신의 데이터를 다루는 방법에 조심해야한다.

POSTGET 모두 사용자 입력을 삭제합니다. Fuzz Testing의 모든 유형과 Q & A를 수행하는 경우 신청서를 안전하게 보관해야합니다.

+0

어떻게 * HTML * -escape가 * SQL * injection과 관련이 있습니까? –

+0

은 언제입니까? 악의적 인 사람이 양식을 사용한다면 어떨까요? – unixmiah

+0

악의적 인 사람이 양식을 사용하지 않으면 어떻게해야합니까? –