CI 묻고 답하기

제목 ci에서 pdo 사용시 prepared statement 적용 여부
카테고리 CI 2, 3
글쓴이 (I_I) 작성시각 2017/07/09 00:08:25
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 14574   RSS

안녕하세요 초보개발자입니다.

지금 보안에 굉장히 민감한 프로젝트를 하고 있습니다.

개발단계에서 일단 SQL Injection은 원천봉쇄하기 위해서 pdo를 사용하게 됐습니다. prepared statement 기능 때문에요.

ci에서 pdo를 연동시키고 그냥 ci 메뉴얼대로 

$this->pdo = $this->load->database('pdo',true);

$stmt=$this->pdo->query('SELECT * FROM user_info' . $type);

var_dump($stmt->result());

이렇게 ci에서 다른 db드라이버 쓸때처럼 사용해도 아래와 같은 prepared statement 과정을 내부적으로 거치는 건가요?

 

$stmt = $mysqli->prepare("SELECT * FROM user_info WHERE type=?");

$stmt->bind_param("s", $_GET['type']);

$stmt->execute();

$stmt->bind_result($id, $description, $type);

 

출력결과는 이상 없는데 prepared statement 기능이 내부적으로 이뤄지는지 궁금해서 질문올립니다.

( 여기서 prepared statement의 기능에 대한 저의 초점은 sql injection를 차단해주는 기능입니다.)

태그 pdo,injection
 다음글 asp,php만 할줄 압니다...codeigniter ... (5)
 이전글 tcpdf 라이브러리를 사용할 경우 바로 뷰를 호출해선... (2)

댓글

변종원(웅파) / 2017/07/09 00:49:26 / 추천 1

바인딩이네요. pdo 사용안해도 ci active record로 바인딩 가능합니다. 

그리고 ci active record로 인젝션 처리도 가능하구요. 매뉴얼의 데이터베이스 부분 한번 정독하세요.

(I_I) / 2017/07/09 00:56:18 / 추천 0

에고.. 쓸데없는 질문에 답변 감사합니다. 하루 종일 찾아도 못찾았는데 질문 올리고 메뉴얼 정독하던중 찾았는데 이미 답변해주셨네요... 시간 뺏었네요 죄송...

변종원(웅파) / 2017/07/09 00:59:31 / 추천 0

(I_I) / 쓸데없는 질문은 없습니다. 

이 질문을 다른 초보분들이 본다면 바인딩과 sql injection 처리가 active record로 가능하단 걸 알게 되겠죠. ^^

(I_I) / 2017/07/09 01:00:20 / 추천 0

감사합니다...!

그런데 혹시나해서 다시 질문드리자면... 바인딩만 거치면 그 쿼리에 대한 sql injection은 원천봉쇄 할 수 있는게 맞나요?

변종원(웅파) / 2017/07/09 09:34:49 / 추천 0
(I_I) / 매뉴얼에 있는걸 물으시는건? ^^;