개발 Q&A

제목 검색기능에서 ' <- 잘 처리 하는 방법 문의드려요
카테고리 PHP
글쓴이 neo천 작성시각 2018/10/10 09:40:39
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 13011   RSS

경험치가 많지않아서 좋은 방법을 모르겠습니다

일단 상황을 얘기하자면, 서비스중인 프로젝트를 담당하게되었습니다

그런데 코드가 옛날코드에, 외주회사의 자체 프레임워크라서 그런지, 사소한 에러가 많이생깁니다.

제 질문상황은..아래부분이인데요,,

----------------------------------------------

관리자페이지에서 검색기능이 있는데 '(홑따옴표) <-라는 문자가 들어가면 sql문에서 에러가 생깁니다.

ex) I'am

왜 에러가 생기는지 알기 때문에 addslashes를 추가해서 그 부분을 처리하였습니다. 

문제는 그런 검색 부분이 한 두군데가 아니고, 

심지어 검색이 아닌, 데이터를 수정(update쿼리문)할때도  ' <-문자열에서 에러가 생깁니다.

어디서 생길지 모르니까 에러가 생기면 그때 그때 addslashes를 추가해주고 있습니다.

----------------------------------------------

위 같은 상황에서 

1번째 질문은, 지금 이대로 에러가 생길때마다 addslashes로 ' <-문자열에 대해 처리하는 방법이옳은방법일까요? 좋은방법일까요?

 

2번째 질문은, 지금 코드를,  코드이그나이터  프레임워크로 씌울려고 하는데코이로 ' <-문자열에 대해 쿼리문 처리하는 좋은 방법 추천해주세여 ㅎㅎ

$this->db->query($sql, array($test)); 말고 다른 방법도있을까요?ㅎㅎ

 

경험적인 부분이나, 조언 부탁드립니다! 감사합니다 ㅎㅎ

 다음글 calendar 라이브러리에서 오늘 이 후 날짜만 cl...
 이전글 URL 질문입니다. (2)

댓글

kaido / 2018/10/10 13:25:17 / 추천 1

코드이그나이터를 사용하시면 ' 싱글 쿼터에 대한 SQL 관련 문제는 발생하지 않습니다.

 

싱글 쿼터로 발생 하는 문제는 

$this->db->query($sql, array($test)); 

 

 

이렇게만 사용하셔도 발생 하지 않으며, 액티브레코드로 사용 하시면 모든 쿼리문에 이스케이프문 형태로 들어가게 되어서 SQL 인잭션 문제에서 벗어나게 됩니다.

액티브레코드가 아니여도 바인딩 이나 익스케이프를 먹이는 방법이 있습니다.

http://www.ciboard.co.kr/user_guide/kr/database/queries.html#escaping-queries

 

더불어 인잭션 대책은 보안 강화.. 이라기 보단 필수 보안 항목 입니다.

 

neo천 / 2018/10/10 18:30:12 / 추천 0
답변감사합니다 말씀해주신 방법대로 처리해야겠습니다 ㅎㅎ