| 제목 | $this->db->escape() 에 대한 질문입니다. | ||
|---|---|---|---|
| 카테고리 | CI 2, 3 | ||
| 글쓴이 | 엘제이 | 작성시각 | 2019/10/31 17:40:30 |
|
|
|||
|
보안상 쿼리문에 들어가는 변수들에 대해 적용을 하는데요 쿼리바인딩을 사용할 수 없는 상황에서 많이 씁니다. 검색조건등이 있을 때 말입니다.
그런데 해당 쿼리빌더는 지어진 이름대로 역슬래쉬 이스케이핑만 혹은 ' 만 붙이는 역활인지 아니면 SQL인젝션 등에 도움을 주는 지 알고 싶슴니다. |
|||
| 다음글 | 코드이그나이터를 처음 사용하는데요.. 2.1.4버전을 ... (3) | ||
| 이전글 | ratchet 구동중에 메세지 전송중 Not enoug... (1) | ||
|
배강민
/
2019/10/31 18:03:06 /
추천
0
|
|
kaido
/
2019/11/01 09:35:47 /
추천
0
네 맞습니다 바인드가 아니라 리터럴형태로 역슬래쉬[정확하게는 밴틱]만 붙여서 조회합니다 |
core를 추적해보면, system/database/DB_driver.php에 해당 함수가 간단히 있고,
그 안에 보면 스트링이면 escape_str()를 타는데, 이는
mysql의 경우 system/databas/drivers/mysql/mysql_driver.php안에 있고
코드는 다음과 같습니다. 2.대 기준입니다.
function escape_str($str, $like = FALSE) { if (is_array($str)) { foreach ($str as $key => $val) { $str[$key] = $this->escape_str($val, $like); } return $str; } if (function_exists('mysql_real_escape_string') AND is_resource($this->conn_id)) { $str = mysql_real_escape_string($str, $this->conn_id); } elseif (function_exists('mysql_escape_string')) { $str = mysql_escape_string($str); } else { $str = addslashes($str); } // escape LIKE condition wildcards if ($like === TRUE) { $str = str_replace(array('%', '_'), array('\\%', '\\_'), $str); } return $str; }