그누보드 [SQL Injection] 그누보드에 적용된 SQL 인젝션 대응코드
페이지 정보
본문
// Blind SQL Injection 취약점 해결
$sql = trim($sql);
// union의 사용을 허락하지 않습니다.
//$sql = preg_replace("#^select.*from.*union.*#i", "select 1", $sql);
$sql = preg_replace("#^select.*from.*[\s\(]+union[\s\)]+.*#i ", "select 1", $sql);
// `information_schema` DB로의 접근을 허락하지 않습니다.
$sql = preg_replace("#^select.*from.*where.*`?information_schema`?.*#i", "select 1", $sql);
// 사용자 입력을 필터링하여 적절한 형식인지 확인
// http://www.w3bai.com/ko/php/filter_sanitize_string.html#gsc.tab=0
// http://www.w3bai.com/ko/php/php_ref_filter.html#gsc.tab=0
// https://www.php.net/manual/en/function.filter-var.php
$comment = $_POST['comment'];
$comment = filter_var($comment, FILTER_SANITIZE_STRING); // 문자열에서 태그 / 특수 문자를 제거합니다
$comment = filter_var($comment, FILTER_SANITIZE_NUMBER_INT); // 숫자와 +를 제외한 모든 문자를 제거합니다 -
// 데이터베이스로부터 가져온 변수 출력 시 HTML 이스케이프 적용
// https://www.php.net/manual/en/function.htmlspecialchars.php
echo htmlspecialchars(comment, ENT_QUOTES, 'UTF-8');
//
$type = isset($_REQUEST['type']) ? preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\s]/", "", $_REQUEST['type']) : '';
댓글목록
등록된 댓글이 없습니다.