답변 2개
채택된 답변
+20 포인트
1년 전
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 을 사용하는 것이 좋습니다.
로그인 후 평가할 수 있습니다
답변에 대한 댓글 4개
j
jihan?
1년 전
역시 항상 정확한 답변을 제공하시네요.
�
배르만
1년 전
추가적으로 문자열 이스케이핑은 SQL Injection 공격을 방지하는 완전한 해결책은 아닙니다.
SQL Injection 방지는 Prepared-statement 와 binding 을 조합해 다루는것이 올바른 방법 입니다.
https://www.php.net/manual/en/class.pdostatement.php
SQL Injection 방지는 Prepared-statement 와 binding 을 조합해 다루는것이 올바른 방법 입니다.
https://www.php.net/manual/en/class.pdostatement.php
p
patrick영
1년 전
답변 감사합니다... 원하던 답변인거 같습니다.
괜찮으시다면 상황 관련해서 더 여쭙고 싶게 있습니다.
write_update나 itemformupdate 페이지 같은경우, 이전 페이지에서 넘어온 문자열에 sql_real_escape_string( )을 사용하면 좋을텐데, 단순히 array_map_deep( )을 통하여 'addslashes'처리만 하는건지 궁금합니다.
그리고 wr_content, it_explan 같이 html태그도 같이 존재하는 변수에는 sql_real_escape_string( ) 을 사용하는 것이 잘못된 선택일까요...
너무 기초적인 질문일까 생각되서 좀 부끄럽네요 ^^;;;
다시 한번 위의 답변 감사드립니다.
괜찮으시다면 상황 관련해서 더 여쭙고 싶게 있습니다.
write_update나 itemformupdate 페이지 같은경우, 이전 페이지에서 넘어온 문자열에 sql_real_escape_string( )을 사용하면 좋을텐데, 단순히 array_map_deep( )을 통하여 'addslashes'처리만 하는건지 궁금합니다.
그리고 wr_content, it_explan 같이 html태그도 같이 존재하는 변수에는 sql_real_escape_string( ) 을 사용하는 것이 잘못된 선택일까요...
너무 기초적인 질문일까 생각되서 좀 부끄럽네요 ^^;;;
다시 한번 위의 답변 감사드립니다.
�
배르만
1년 전
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 의 사용은 목적이 무엇인지에 따라 적절한 선택 여부를 판단할수 있습니다.
https://github.com/gnuboard/gnuboard5/blob/master/shop/itemqaformupdate.php
두 페이지 모두 array_map_deep 은 사용되지 않고 addslashes 만 처리되고 있습니다.
sql_real_escape_string 의 사용은 목적이 무엇인지에 따라 적절한 선택 여부를 판단할수 있습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인