문제

나는 a 이전 질문 내 쿼리는 SQL 주입이 발생하기 쉽습니다.

get_stats = mysql_query("SELECT * 
                               FROM visitors 
                              WHERE site='$_GET[site]' 
                                AND date BETWEEN '$start_date' AND '$end_date' ");

이 문제에 접근하는 가장 쉬운 방법은 무엇입니까? 그리고 주사의 주제에 대한 추가 독서가 있습니까? (Google에서 놓칠 수있는 것). 감사!

도움이 되었습니까?

해결책

사용 준비된 진술.

대부분의 경우, 준비된 진술은 쿼리를 안전한 방식으로 매개 변수와 결합하는 작업을 수행합니다.

다른 팁

$ _get [ 'site']는 브라우저의 URL에서 바로 나오는 값이므로 사용자가 원하는 대로이 값을 쉽게 변경할 수 있습니다. 데이터베이스로 전송하기 전에 실제로 모든 값을 확인/소독해야합니다. .

이와 같은 것은 시작이 될 것이고, 더 많은 작업을 사용할 수 있으며, 많은 방법이 있습니다. 나는 이와 같이 단순히 반복적 인 것들을 통해 모든 변수를 쉽게 통과시키기 위해 사용자 정의 함수/클래스를 만들 것입니다.

$site = mysql_real_escape_string($_GET['site']);
$start_date = mysql_real_escape_string($start_date);
$end_date = mysql_real_escape_string($end_date);

get_stats = mysql_query("SELECT * FROM visitors WHERE site='$site' AND date >= '$start_date' AND date <= '$end_date' ");

mysql_real_escape_string 여기에서 가장 기본적이고 쉬운 보안 형태입니다.

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