2009-12-07 3 views
0

구조에서 항상 ZZZZ111 인 7 자의 영숫자 텍스트 문자열을 얻은 다음 해당 레코드 ID에 대한 모든 관련 데이터를 가져 오기 위해 MySQL 쿼리에 사용되는 레코드 편집 링크가 있습니다.

mysql_real_escape_string() 내가 위생 처리하는 데 필요한 모든 것 $_GET['id']? 아니면 데이터베이스를 보호하기 위해 더 많은 조치를 취해야합니까?

+2

소독 입력을 확인하는 가장 좋은 방법은 매우 유용이 하나를 발견하고

http://php.net/manual/en/function.htmlentities.php

수행 할 수 있습니다 또는 당신은 등 을 특정 태그를 허용하는 inputfilter 클래스를 사용할 수 있습니다 준비된 진술. 코드에 적용하기가 매우 쉽고 안전성이 훨씬 더 높아집니다. – Tordek

답변

6

mysql_real_escape_string() 악의적 인 문자는 모두 이스케이프됩니다. 또한 /^[A-Za-z]{4}\d{3}$/과 같은 정규식을 사용하여 사용자가 실제로 올바른 입력을 입력했는지 확인할 수 있습니다.

2

SQL 쿼리에 대한 입력을 안전하게하려면 mysql_real_escape_string()으로 충분해야하지만 PDO 및 prepared statements으로 전환하는 것이 좋습니다. 그들은 사용하기에 약간 좋고, 좀 더 효율적입니다 (명령문은 한 번만 구문 분석되고 쿼리는 다시 사용할 수 있습니다).

그러나 허용 목록을 기반으로하는 입력란에서 HTML을 필터링하여 페이지가 cross-site scripting에서 제외되어 있는지 확인해야합니다.

0

mysql_real_escape_string$_GET['id']에 대한 작업을 수행해야합니다. 또한 준비된 명세서를 PDO을 통해 살펴보십시오.

1

mysql_real_escape_string()은 좋은 출발점이며 준비된 문장을 사용하는 것이 좋은 선택이 될 것입니다. Zend_Db은 PDO를보다 쉽게 ​​작업 할 수있는 일부 DB 추상화를 조사하고자 할 때 유용합니다.

저는 이것을 입력을위한 일종의 RegEx 검사기를 쓸 기회로 생각하고 있습니다. 시작하기 수있는 샘플 정규식은 다음과 같습니다 PHP 정규식에

[A-Z]{4}[0-9]{3} 

더 많은 정보는 여기에서 찾을 수 있습니다 : http://www.regular-expressions.info/php.html

2

당신에게 사용자에게 데이터를 표시 할 계획이라면 당신은 어떤 HTML 태그를 제거 할 것 역시. 예를 들어 방명록에 악의적 인 자바 스크립트를 삽입 한 사람이 있습니까? 내가 PDO를 사용하여 http://www.phpclasses.org/browse/package/2189.html