질문 Q #13002
addslashes 로 디비 사용하기
lzwdct 2016-02-22 13:00:52

안녕하세요

 

코드이그나이터 초보입니다.

전 개발자가 짜 놓은 코드를 보고 있는데 현재

//mysqli 사용

$test = htmlspecialchars(addslashes($this->input->post('test')));

$sql = "SELECT * from table WHERE file_id = '$test'";       

$query = $this->db->query($sql);

이렇게 코드가 쓰이고 있는데 여러 sql injection 코드들을 테스팅 중인데 다 안전히 텍스트로 들어가네요

ex)

Robert'); DROP TABLE User;

INSERT INTO User (name) VALUES (?)  

이대로 쓰여도 괜찮을까요?

 

감사합니다!

답변 1
#1 한대승(불의회상) 2016-02-22 13:05:49

이전 개발자분이 인젝션방어를 위해 잘 처리해 두신것 같습니다.

CI에서는 sql문을 직접 쓰는 것 보다 아래 처럼 쿼리를 바이딩 하여 사용 하시는것을 권장 합니다.

$sql = 'SELECT * from table WHERE file_id = ?';
$this->db->query($sql, array($test));

http://cikorea.net/user_guide_2.1.0/database/queries.html