mysql_real_escape_string ()가 데이터베이스에 슬래시를 남겨 두어야합니까?
문제
나는 smarty를 사용하고 있습니다 mysql_real_escape_string()
사용자 입력 및 코드를 다음과 함께 삽입 할 때 '
또는 "
, phpmyadmin에서의 조회는 백 슬래시없이 보여줍니다.
DB에서 레코드를 받으면 백 슬래시도 없습니다. 그러나 방금 DB에 삽입하지 않고 탈출 된 문자열을 통과하면 백 슬래시됩니다.
슬래시를 추가하고 삽입 한 다음 출력 할 때 제거해야합니까? 아니면 내가 뭔가를 놓치고 있습니까?
해결책
당신은 그것을 놓치고 있습니다 - 백 슬래시로 탈출하는 것은 쿼리가 잘못 변하지 않도록하기위한 것입니다. 예를 들어, 이와 같은 것이 반드시 깨지고 SQL 주입을 위험에 빠뜨릴 수 있습니다.
insert into table values ('whatever 'this' is')
그리고 테이블에는 아무것도 저장되지 않을 것입니다.
insert into table values ('whatever \'this\' is')
테이블에 "뭐든지 뭐든지"값을 절약 할 것입니다.
제휴하지 않습니다 StackOverflow