sql 관련 함수 질문

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
sql 관련 함수 질문

QA

sql 관련 함수 질문

본문

안녕하세요 그누 열공중 궁금한것이 있어 질문드립니다.

sql_escape_string( );   sql_real_escape_string( ); 이 두 함수에 대하여 질문드립니다.

둘다 sql 인젝션 대응으로 백슬래쉬로 문자열 처리 하는것으로 보이는데,

어떠한 차이점으로 쓰임새가 다른지, 또한 어떠한 상황에서 사용 해야 최적인지 알고 싶습니다.

감사합니다.!

이 질문에 댓글 쓰기 :

답변 2

sql_escape_string 는 addslashes 를 사용하며

https://github.com/gnuboard/gnuboard5/blob/master/config.php#L203

https://github.com/gnuboard/gnuboard5/blob/master/common.php#L90

 

sql_real_escape_string 은 mysqli_real_escape_string 또는 mysql_real_escape_string 를 사용합니다.

https://github.com/gnuboard/gnuboard5/blob/master/lib/common.lib.php#L2399

 

addslashes 는 단순히 문자열을 올바로 표현할수 있도록 역슬래시를 추가하는 동작을 수행하지만

mysql(i)_real_escape_string 은 실제 MySQL DB 가 escaping 에 필요하다고 판단되는 문자열을 필터링 할 것입니다.

 

따라서 SQL Injection 방어가 목적인 경우 sql_real_escape_string 을 사용하는 것이 좋습니다.

추가적으로 문자열 이스케이핑은 SQL Injection 공격을 방지하는 완전한 해결책은 아닙니다.
SQL Injection 방지는 Prepared-statement 와 binding 을 조합해 다루는것이 올바른 방법 입니다.
https://www.php.net/manual/en/class.pdostatement.php

답변 감사합니다... 원하던 답변인거 같습니다.
괜찮으시다면 상황 관련해서 더 여쭙고 싶게 있습니다.
write_update나  itemformupdate 페이지 같은경우, 이전 페이지에서 넘어온 문자열에 sql_real_escape_string( )을 사용하면 좋을텐데, 단순히 array_map_deep( )을 통하여  'addslashes'처리만 하는건지 궁금합니다.
그리고 wr_content, it_explan 같이 html태그도 같이 존재하는 변수에는 sql_real_escape_string( ) 을 사용하는 것이 잘못된 선택일까요...
너무 기초적인 질문일까 생각되서 좀 부끄럽네요 ^^;;;
다시 한번 위의 답변 감사드립니다.

https://github.com/gnuboard/gnuboard5/blob/master/bbs/write_update.php
https://github.com/gnuboard/gnuboard5/blob/master/shop/itemqaformupdate.php
두 페이지 모두 array_map_deep 은 사용되지 않고 addslashes 만 처리되고 있습니다.

sql_real_escape_string 의 사용은 목적이 무엇인지에 따라 적절한 선택 여부를 판단할수 있습니다.

sql_escape_string 함수는 7.0 이하입니다. 하여 이제 더이상 사용 하시면 않된다는 겁니다.

따라서 7.0 이상부터는 sql_real_escape_string 함수만 지원이 됩니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 1,110
QA 내용 검색
filter #html ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT