2011-07-30 5 views
0

내가 그들을 삽입하기 전에 모든 문자열에이 일을 해요 :db에서 "이스케이프 된"문자열을 검색하려면 어떻게합니까?

mysql_real_escape_string($_POST['position']); 

는 어떻게 제거 않습니다 : \를 가져 오는 중 오류 후?

또한이 충분한 보안은 "PIZA \"\ 또는 나는 다른 무언가를해야

그래서 나는 끝낼하지? 내가 직접 $ _POST [ '위치'] 전화 제안 ​​

감사

+0

를' mysql_real_escape_string()'. –

+0

두 번 이스케이프 처리하지 않으면 데이터베이스에서 다시 검색 한 후 슬래시가 없어야합니다. @ 매트 : 왜? 그가 모든 것을 제대로 벗어난다면, 그것은 어떤 차이가 있나? (나는 정직하게 호기심이있다) – mpen

+1

@Mark는 ['sql-injection' FAQs (http://stackoverflow.com/questions/tagged/sql-injection?sort=faq)를 참조하십시오. 다음으로 시작하십시오. http://stackoverflow.com/questions/60174 http://stackoverflow.com/questions/110575 http://stackoverflow.com/questions/714704 –

답변

1

stripslashes()을 사용하면 이스케이프 문자를 제거 할 수 있습니다.

이스케이프 처리가 좋습니다. 값이 정수가 될 경우 다음과 같이 입력하는 것이 좋습니다.

$value = (int) $_POST['some_int_field']; 

이렇게하면 항상 정수 값이됩니다.

2

비 이스케이프 버전을 얻기 위해 (그것에는 mysql_real_escape_string를 호출하지 않습니다).

덧붙여 말하자면 보안에 대한 귀하의 의견은 사물을 이해하는 데 약간의 어려움을 암시합니다.

문자열을 처리하는 한 가지 방법은 한 가지 종류의 어려움을 초래하는 이스케이프 된 버전을 처리하는 것이고 다른 하나는 포함하기 직전에 다른 이스케이프 문자열을 처리하여 다른 종류의 어려움을 초래하는 것입니다. 나는 후자를 많이 선호한다.

0

mysql_real_escape_string()은 SQL 문자열에 \ s를 추가하지만 문자열 파싱의 목적으로 만 존재하므로 데이터베이스에 추가하면 안됩니다.

데이터베이스에 \ s이있는 경우 mysql_real_escape_string()을 호출하기 전에 뭔가 다른 것이 이스케이프 처리됩니다. magic_quotes_gpc가 켜져 있지 않은지 확인하십시오.

+0

PHPMyAdmin을 사용하고 있는데 어떻게 사용합니까? 켜져? – lisovaccaro

+0

phpMyAdmin에서 설정이 표시되지만이 한 줄로 된 페이지를 만드는 것이 확실하지 않습니다 ... ' ' 그리고 서버에서 실행하면 PHP 설정. 따옴표없이 "magic_quotes_gpc"를 검색하면 "On"또는 "Off"가 표시됩니다. 이 페이지는 약간의 보안상의 위험이 있으므로 사용 후 또는 삭제 된 이름을 지우면 삭제하십시오. –

1

그것은 마법 따옴표가 사용되기 때문에, 그래서 다양한 기능이 사용하게 될 수있다 : *** 정말 *** 당신이 대신`PreparedStatement`을 사용하여 바로해야하지만 ...

if (get_magic_quotes_gpc()) { // Check if magic quotes are enabled 
     $position = stripslashes($_POST['position']); 
    } else { 
     $position = mysql_real_escape_string($_POST['position']); 
} 
관련 문제