2011-08-13 2 views

답변

5

magic_quotes_gpc가 있기 때문입니다. 이것은 SQL 입력을 피할 수없는 개발자를 위해 들어오는 데이터를 자동으로 벗어나도록 설계된 나쁜 '기능'입니다.

최대한 빨리 사용을 중지해야합니다.

ini_set('magic_quotes_gpc', 'off'); 
+0

동의하십시오! magic_quotes_gpc가 깨졌습니다! +1 – TMS

+0

이것은 나를 위해 작동하지 않습니다! 'magic_quotes_gpc()'는 이미 0을 반환했습니다 :( –

1

스트립()을 사용해보십시오. stripslashes()는 addslashes()와 반대이며 문자열에서 이스케이프 슬래시를 제거합니다.

+0

훌륭해, 고마워! – mowwwalker

+2

'magic_quotes_gpc'의 효과를 수동으로 되돌리는 대신이 기능을 모두 비활성화해야합니다. –

1

stripslashes() 기능을 사용할 수 있습니다. http://php.net/manual/en/function.stripslashes.php

이 동작은 "Magic Quotes"PHP 기능으로 인해 발생합니다. http://php.net/manual/en/security.magicquotes.php

당신은 마법 따옴표가 활성화 여부에 관계없이 작동하도록이 같은 것을 사용할 수 있습니다

if (get_magic_quotes_gpc()) { 
    $data = stripslashes($_POST['data']); 
} 
else { 
    $data = $_POST['data']; 
} 
+0

당신에게도 감사합니다.하지만 그는 먼저 그것을 얻었습니다 : D – mowwwalker

+1

'magic_quotes_gpc'의 효과를 수동으로 되돌리는 대신,이 기능을 모두 비활성화해야합니다. –

2

당신은 깨진 기능입니다 magic_quotes_gpc의를 끄한다 (Delan의 답변을보고, 나는 완전히 동의).

하지만 잠깐! 페이지에 데이터베이스 또는 디스플레이에 사용하려면 $ _REQUEST, $ _POST 및 $ _GET 및 $ _COOKIE에서 사용자 입력을 삭제해야합니다! 그렇지 않으면 코드가 다양한 유형의 공격을 받기 쉽습니다!

"보편적 인 위생 처리"와 같은 것은 없습니다. 그게 전부이기 때문에 으로 인용합시다. MySQL의 쿼리

  • HTML 코드
  • JSON에 대한
  • like 표현 MySQL의 쿼리에 대한

    1. 문자열 값 : 인용하면

      , 당신은 항상 위해 같은 일부 특정 출력을, 텍스트를 인용

    2. mysql 정규식
    3. php 정규 표현식

    각 경우마다 다른 구문 구문 내에서 사용되므로 다른 인용 부호가 필요합니다. 이것은 또한 인용문을 PHP로 입력하면 안되지만 특정 출력은입니다! magic_quotes_gpc과 같은 기능이 손상된 이유는 무엇입니까 (항상 꺼져 있는지 확인하십시오 !!!).

    그렇다면 이러한 특정 사례에서 인용을 위해 사용하는 방법은 무엇입니까?

    1. mysql_real_escape_string($str)
    2. mysql_real_escape_string(addcslashes($str, "%_"))
    3. htmlspecialchars($str)
    4. json_encode()을 (더 현대적인 방법이있을 수 있습니다, 정정 해줘 자유롭게,하지만 나를 위해 노력하고 있습니다 이러한) - 단지 UTF8을 위해! iso-8859-2에 대한 함수를 사용합니다.
    5. mysql_real_escape_string(addcslashes($str, '^.[]$()|*+?{}')) - 백 슬래시가 두 번 이스케이프되므로이 경우 preg_quote를 사용할 수 없습니다!
    6. preg_quote()
  • 0

    나는 그것이 문자열로 값을 잡고 항상이 방법을 사용하기 때문에 더 슬래시가 없을 것입니다 :

    $variable = mysql_escape_string($_REQUEST['name_input']); 
    
    관련 문제