2010-04-12 9 views
6

우리는 사용자가 단일 텍스트 입력에서 데이터베이스를 검색하도록하고 있으며 일부 사용자 제공 문자열을 필터링하는 데 어려움을 겪고 있습니다.사용자 입력 유효성 확인 또는

예를 들어, 사용자가 제출 한 경우 :

��������� lcd SONY 

(음의?) 내가 검색을 취소해야합니다. 쉬운 실행하도록

내가 싸서 위의 문자열의 버전을 base64 인코딩을 포함한다 : 단지 MySQL 데이터베이스 쿼리를 실현

print(base64_decode("1MfLxc/RwdPHIGxjZCBTT05Z")); 

내가 지금 전에 이러한 입력을 무시하지만, 한 (왜 확실하지 않다) 거의 영원히 집행되어 이제는 최우선 과제로 삼고 있습니다.

또 다른 예를 들어 우리가 UTF-8과 mb_detect_encoding를 사용하고 있음을 강조하기 위해 많은 도움이되지 않습니다

print(base64_decode("zqDOm8+Fzr3PhM63z4HOuc6/IM+Bzr/Phc+HzyU=")); 
ΠΛυντηριο ρουχ�% 

그래서 :

  • 를 내가/감지 할 수있는이 입력을 필터링하는 방법?
  • 어떻게이 입력을 생성합니까?
+2

이러한 입력을 거부하는 것은 잘못된 행동입니다. 왜 그들이 처음에 성능에 나쁜 영향을 미치는지 파악해야합니다. – SLaks

+0

이것은 첫 번째 방어선입니다. 나는 지금 당장 붙어있어서 밝은 아이디어를 얻을 때까지 데이터베이스 성능 문제를 조사 할 것입니다. – zaf

+0

사용자가 실제로 대체 문자를 수동으로 입력한다고 말하고 있습니까? http://www.fileformat.info/info/unicode/char/FFFD/index.htm –

답변

1
당신이 정말로 (나는 reccommend하지 않는) 필터링 할 경우뿐만 아니라 숫자에 대한 검사를 할 수 있지만 당신은 그것을 얻기해서는 안

로 "-;"등

이러한 기능 중 일부를 사용하여 필터링 프로세스를 수행 할 수 있습니다. 당신은 MySQL의 연결을 생성 한 후이 쿼리를 실행하면

http://www.php.net/manual/en/function.ctype-alnum.php

+0

"παπουτσια"와 같은 것을 처리합니까? 번호 : – zaf

0

, 그것은 밖으로 뱉어없이 잘 UTF-8을 입력하고 결과를 처리해야 하는가? '의.

mysql_query("SET character_set_client=utf8", $mysqlConn); 
mysql_query("SET character_set_connection=utf8", $mysqlConn); 
mysql_query("SET character_set_results=utf8", $mysqlConn); 

(데이터베이스가 UTF-8로 설정하고 그들이으로 설정하지 않는 경우를 필터링하지 괜찮다 가정?의)

(또한 MySQL을 사용하는 가정, 기타 dbms는 아마도 비슷한 기능을 가지고 있습니다)

+0

우리는 사용자가 데이터베이스에 닿기도 전에이 입력을 받고 있습니다. – zaf

관련 문제