2010-01-27 3 views
2

사용자 등록을 프로그래밍하고 있습니다. 그러나 '.', '' ','- '와 같은 샘플 코드에서'username '으로 제한하는 문자를 사용할 수 있습니다.사용자 등록을 정기적으로 수행해야하는 이유는 무엇입니까?

이러한 제한이 필요합니까?

나는 MySQL + PHP를 사용하고 있습니다. 나는 다음과 같은 여러 가지 방법으로 채택 할 경우

  1. 변화 'utf8_general_ci'에 컬럼의 정렬을;
  2. 'mysql_escape_string'또는 'mysql_real_escape_string'함수를 PHP로 가져 오십시오.
  3. 사용자 이름 < -> userID에 대한 관계 테이블을 만듭니다 ('사용자 이름'은 클라이언트 입력이고 userID는 INT 번호 임). 뿐만 아니라 데이터베이스에서 '사용자 ID'를 사용하지만 '사용자 이름'은 HTML로만 표시됩니다.

정말 정규 표현식이 필요합니까?

도움 주셔서 감사합니다.


추신 : 저는 중국어이므로 한자가 필요합니다.

답변

1

mysql_real_escape_string을 제외하고 웹 앱이므로 HTML을 구성 할 수있는 모든 항목을 제거하거나 허용하지 않는 것이 좋습니다. 일반적으로 "<"및 ">"을 금지하는 것으로 충분합니다.

당신은 정말 어떤 사용자가 그들의 이름을 입력하고 싶지 않아요 :

<script src=http://malicious/script.js></script>

대안 솔루션은 귀하의 페이지에 데이터를 출력 할 때 htmlspecialchars을 사용하는 것입니다.

0

그것은 당신에게 달려 있지만, mysql_real_escape_string를 사용하여 내 의견으로는 괜찮을 것 (그리고 나는 꽤 편집증 해요) 그러나 당신이 확인해야합니다, 그 제한이 켜지지하지

1

는, 그 이름은 유효하고 독특한입니다 내가 조언 할 문자열과 MySQL의 주입에서

온다 을 제거 취약 자 (또는 정규식없이) 문자열은 탈출을 담당 준비된 문에 대한 Mysqli 확장자를 사용하는 당신은 모든 벗어날 필요가 없습니다 문자열 수동으로

관련 문제