PHP SQL Injection 공격 방지 방법
PHP 에서 mysql injection 공격을 방지하는 방법입니다.
id 는 가급적이면 알파벳과 숫자만 허용하고 특수문자(따옴표나 주석으로 사용되는 #문자 등)를 사용하지 못하게 하는게 좋습니다.
특수문자로 된 인젝션이라면 php.ini 옵션에 magic_quotes_gpc 가 on 이라면 방지가 됩니다.
하지만 PHP 5.4 버전 부터는 저 옵션이 제외가 됩니다.
이럴때는 아래 처럼 코딩하는게 좋습니다.
▶ addslashes 함수 사용
if(!get_magic_quotes_gpc()) { // PHP 5.4 ~
$id = addslashes($_POST['id']);
$pw = addslashes($_POST['pw']);
}
else {
$id = $_POST['id'];
$pw = $_POST['pw'];
}
▶ 정규식으로 알파벳과 숫자 이외의 문자 체크
if(preg_match('/[^A-Za-z0-9]/', $id)) {
return false;
}
▶ 역슬래쉬 문자 체크
if(strlen($pw) != strlen(str_replace("\\","",$pw))) {
return false;
}
▶ 공백 문자 체크
if(strpos($pw, " ") !== false) {
return false;
}
▶ SQL Injection 예
id => ' or 1=1#
pw => 1234
SELECT * FROM member WHERE id = '' or 1=1#' and pw = '1234'
위의 경우는 공백문자만 체크해도 방지가 가능합니다.
'IT이야기' 카테고리의 다른 글
ConoHa VPS 윈도우 10 ISO 이미지로 설치하기 (0) | 2017.02.16 |
---|---|
알씨로 이미지 일괄변경 하기 (0) | 2017.02.10 |
카비레이크 G4560 vs 스카이레이크 i3-6100 (0) | 2017.02.02 |
JAVASCRIPT 접속 IP 확인하는 방법 (0) | 2017.02.02 |
PHPExcel 셀병합 처리 방법 (0) | 2017.02.01 |