검색시 특수문자 \가 삽일될경우. 정보
검색시 특수문자 \가 삽일될경우.본문
활용팁에 올릴지 질문답변에 올릴지 애매한 부분이 있어
일단 활용팁에 올립니다..
common.php - 246 ~249
if (isset($stx)) { // search text (검색어)
$stx = mysql_real_escape_string($stx);
$qstr .= '&stx=' . urlencode($stx);
}
\ 가 붙는 이유는 mysql_real_escape_string 입니다.
몇몇 글을 찾아봤을때 mysql_real_escape_string 를 제거후 사용하는경우도 더러 있는거 같은데.
위험한 발상같습니다..
mysql_real_escape_string 는 sql injection 방어할때 유용합니다.
하지만 문제는 $stx변수를 그대로 사용하면서 문제가 발생됩니다.
paging시나 페이지 이동시 \가 계속 적으로 붙어버리니깐 올바른 검색이 되질 않더군요..
그래서 위 소스를 이렇게 고쳐보는건 어떨까 싶습니다.
if (isset($stx)) { // search text (검색어)
$stx = str_replace("\\","", trim($stx));
$stx = mysql_real_escape_string($stx);
$qstr .= '&stx=' . urlencode($stx);
}
$stx = str_replace("\\","", trim($stx)); 로 인하여 넘어온 \를 제거하고
다시 mysql_real_escape_string 함수로 특수문자에 \를 붙이면..
중복되서 처리가 되는걸 방지 할수 있을듯 싶습니다.
하지만 input 태그에서 value값에 $stx 변수를 그대로 쓰면 \가 붙어서 나오는 부분은.
별도에 함수를 만드셔서 다시 제거 해주는게 좋을듯 싶습니다.
아니면
<script type="text/javascript">document.폼이름.stx.value = "<?=$stx?>";</script>
방법도 한가지 방법이라고 생각됩니다.
위방법은 자바스크립트에서 특수문자를 붙여주는거와 같은 효과로 올바르게 value값이 넣을수 있지
않을까 생각이 듭니다.
추천
1
1
댓글 3개
아참 저 방법은 '\' 으로 검색은 불가한 방법입니다 ㅠㅠ

if (isset($stx)) { // search text (검색어)
$stx = mysql_real_escape_string($stx);
$stx = strip_slashes($stx);
$qstr .= '&stx=' . urlencode($stx);
}
$stx = mysql_real_escape_string($stx);
$stx = strip_slashes($stx);
$qstr .= '&stx=' . urlencode($stx);
}
stripslashes() 역슬래시를 제거 해주는 함수가 있었군요..
근대 적어주신게 보안에 취약하지 않을까요?
mysql_real_escape_string($stx); 쿼리날리시 인젝션부분에 대한 보안 내용인데.
stripslashes($stx);로 다시 제거하니.. 아예 않쓰는거와 동일하다고 보여지네요...
순서를 바꿔서
stripslashes();
mysql_real_escape_string();
하는게 어떨까 싶네요.. 위 본문 내용처럼 문제점은 있지만요 ㅠㅠ
근대 적어주신게 보안에 취약하지 않을까요?
mysql_real_escape_string($stx); 쿼리날리시 인젝션부분에 대한 보안 내용인데.
stripslashes($stx);로 다시 제거하니.. 아예 않쓰는거와 동일하다고 보여지네요...
순서를 바꿔서
stripslashes();
mysql_real_escape_string();
하는게 어떨까 싶네요.. 위 본문 내용처럼 문제점은 있지만요 ㅠㅠ