2012-02-13 2 views
1

PHP의 PEAR 프레임 워크를 사용하여 응용 프로그램을 개발했지만 두 번 이스케이프/인용 입력 문제가 발생하여 줄 바꿈 (\ n)이 제대로 표시되지 않는 문제가 발생했습니다. 포럼 검색은 여러 가지 답변으로 이루어졌지만 PEAR의 escape() 또는 quote() 함수를 사용하여 SQL 주입 보안을 사용하기에 충분한 지 또는 mysql_real_escape_string()을 사용해야합니까? 나는 나중에 내용을 뱉어 nl2br()을 + 반드시 htmlspecialchars()를 사용하려고, 원래 잘못 탈출을 다음 입력을 사용 해요 :PHP PEAR의 escape() vs quote()와 mysql_real_escape_string()?

$db->quote(mysql_real_escape_string(trim($_POST['text'])));

+0

사용중인 패키지에 대해 언급하지 않았습니다. MDB2_MySQL을 사용하고 있습니까? – kguest

답변

4

를 사용하여 데이터베이스 드라이버의 탈출 기능. PEAR 패키지를 사용하여 데이터베이스에 연결하는 경우 이스케이프 기능을 사용하십시오. 원시 mysql 함수를 사용하는 경우 mysql_real_escape_string을 사용하십시오. 둘 이상을 사용하지 마십시오 (알아 낸대로).

더 나은 것은 시간과 함께 현대 준비 문을 사용하십시오 (예 : PHP's PDO class).

+0

+1 "준비된 문 사용". 어떤 RDBMS (예 : MSSQL)의 경우 이는 "잘 정의 된"옵션 일뿐입니다. –

+0

아, 고마워, 어떤 이유로 그 사실을 전혀 알지 못해. 그것을 밖으로 검사 할 것이다! – carlinyuen