문제

내가 보낼 때 ");-- 입력 필드에서 LocalHost PHP 서버로 자동 변환합니다.

\");--

이 행동이 얼마나 신뢰할 수 있는지 모른다는 점을 제외하고는 훌륭해 보입니다. SQL 주입을 피하는 것처럼 보이지만 개발 환경은 생산 환경과 동일하지 않으며 생산 환경에 이러한 종류의 보호가 자동으로 활성화되지 않을까 걱정됩니다 ...

PHP 가이 작업을 수행하는 이유 (사용하지 않고 입력을 변환합니다. mysql_real_escape_string)? 그렇게합니다 언제나 특정 확장 기능 만 있거나? SQL 주사를 방지하기 위해이 동작에 의존하는 것이 안전합니까?

도움이 되었습니까?

해결책

당신이 가지고있는 것 같습니다 마법 인용문 활성화. 그러나이 옵션을 비활성화하거나 되돌릴 수 있습니다. mysql_real_escape_string 더 안전합니다.

다른 팁

PHP 의이 "특징"은 "마법 인용문"으로 알려져 있습니다. '마법'만큼이나 잘못된 보안 감각을주는 것 이상을하지 않기 때문에 그것들을 사용하는 것은 매우 나쁜 관행입니다. 고맙게도 그들은 PHP 6에서 제거되었습니다 (개발 중).

더 자세한 비판 목록은 이것에서 찾을 수 있습니다. 위키 백과 기사.

PHP 매뉴얼은 다양한 방법을 설명합니다 마법 따옴표를 비활성화합니다.

추상화 레이어를 사용하여 데이터베이스와 대화하는 데 도움이 될 수 있습니다. Zend_db. 예를 들어, Zend_db_select를 인스턴스화하여 Select 문을 작성하면 다음과 같습니다.

//$_GET['thing'] is automatically escaped 
$select = $zdb->select()->from('things')->where('name = ?',$_GET['thing']);
$result = $zdb->fetchRow($select->__toString());//__toString generates a really pretty, vendor independent query

//a plain vanilla query would look like this:
$result = $zdb->fetchRow('select * from things where name = ?', $zdb->quote($_GET['thing']);

당신은 마법의 인용문이 켜져 있습니다. PHP 그룹은 공식적 으로이 기능을 강력하게 사용하지 않았으며,이 기능을 강력하게 낙담 시켰습니다. 런타임에 마법 따옴표를 비활성화하는 방법은 항상 작동하지 않습니다. .htaccess 또는 ini_set() 대본에서. 항상 스트립 슬래시를 부르는 것도 꽤 지저분해질 수 있습니다.

자세한 내용은: http://ca3.php.net/magic_quotes

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top