2009-09-09 2 views

답변

1

도 마찬가지입니다.

magic quotes은 모든 악의 뿌리입니다. 사용자가 정의한 사용자 만들려 할 이유 (조기 최적화의 xD보다 더 내 눈에)

과 (add | strip가) 함수를 슬래시 때 네이티브 PHP는 사람이 있습니까?

당신이 (예를 들어, mysqli_real_escape_string) 데이터베이스의 특정 기능을 사용

편집을 데이터베이스에 대한 날짜를 탈출하려는 경우

. (코멘트에 SADI와 토론 후) 내 대답을 완료 :

  • 당신이 당신이 URL에 입력을 사용하려고하는 경우 htmlspecialchars

  • 를 사용,/출력 일부 입력을 표시하려면 , urlencode

그래서, 당신의 데이터를 인코딩 할 최고의이나 올바른 하나의 방법 없다 사용합니다. 당신은 적시에 올바른 장소에서 올바른 기능을 사용해야합니다. 각각은 고유 한 목적을 가지고 있습니다 (여기를 참조하십시오 : http://xkcd.com/163/)

5

수동으로 수행하십시오! 매직 인용문은 PHP 5에서 사용되지 않으며, 은 PHP 6에서을 제거했습니다. 그뿐만 아니라 순수한 악마입니다! 상상조차 할 수없는 장소에서 오류가 발생합니다. 명시 적 (Explicit)은 항상 암묵적인 것보다 낫습니다 (Python이 말한 것처럼).

1

마술 따옴표를 전혀 사용하지 않는 것이 가장 좋습니다. 당신이 스크립트의 시작 부분을 끄면 :

set_magic_quotes_runtime(0); 
가 감가 상각되는 PHP의 현재 버전을 코딩하는 동안 당신은, PHP의 이전 버전과 호환 될 것입니다 응용 프로그램을 만들 수 있습니다

및 완전히 제거 된 버전을 양육하십시오.

문자열에서 따옴표를 지우는 것은 좋은 습관이고 잘못된 일이 발생하면 PHP 설정이 아닌 자신의 코드에 있음을 알게됩니다. 또는 PHP 버전과 호환되지 않습니다.

희망이 있습니다.

2

마법 인용 부호를 끄려면 모든 입력에서 따옴표를 자동으로 이스케이프 처리하는 자체 시스템으로 바꾸지 마십시오. 요점은 : 모든 것을 자동으로 벗어나는 것은 나쁜 생각입니다. 응용 프로그램의 다른 시스템이나 계층으로 전달하기 전에 먼저 이스케이프해야합니다. 각 시스템마다 이스케이프 요구 사항이 다릅니다.

예를 들어 HTML을 출력하는 경우 문자열 변수를 출력하기 전에 htmlspecialchars()를 사용하십시오. SQL을 데이터베이스로 보내려면 mysql_real_escape_string()과 같이 해당 데이터베이스 용으로 설계된 이스케이프 함수 중 하나를 사용하십시오. XML 문서를 만들려면 PHP의 XML 라이브러리 중 하나를 사용하십시오. 이것들은 당신을 위해 탈출을 할 것입니다.

완벽한 해결책은 없습니다. 마법의 따옴표가 나쁜 이유는입니다.

관련 문제