2014-08-27 3 views
0

나는 Asp.net Mvc4를 사용하고 있으며 정규 표현식을 사용하여 나쁜 단어를 차단하고 있지만 문제는 누군가가 나쁜 단어를 대문자로 쓰면 어떻게 멈출 수 있습니까? ? 이것은 내가다른 단어 조합을 중지하는 방법

[RegularExpression("^((?!(www|gamble|keygen|http)).)*$", ErrorMessage = "Invalid word")] 

그래서이 사람이 www가을두고있는 경우는 그것을 막을 것이다 그러나 그들은 WWWwww가 WWW를 넣어 경우가 통과 할 것입니다; 모든 단어의 조합을 막을 수있는 방법이 있습니까?

+5

'i'플래그를 사용하십시오. 대소 문자를 무시합니다. – krodmannix

+4

누군가가 텍스트를 통해 무언가를 전하고자하는 경우 몇 가지 제한 사항을 적용하더라도 상관 없습니다. –

+2

그냥 가지 마세요. Regexs만큼 위대한 그들은 전용 포스터에 의해 쉽게 바보입니다. –

답변

0

클라이언트 측 유효성 검사를 사용하지 않는다고 가정합니다. 실제로 나쁜 단어 목록을 클라이언트에 보내지 않으려한다고 생각합니다.

RegularExpressionAttribute은 외부에서 제공되는 한정자를 지원하지 않기 때문에이 경우 수정자를 정규식에 (?i)을 붙임으로써 사용할 수 있습니다. 자바 스크립트에서는 인라인 수정자를 지원하지 않으므로이 기능은 작동하지 않습니다.

그러나 다른 사람들이 지적한 것처럼 이러한 종류의 보호는 쉽게 속일 수 있으며 더 나쁜 경우 합법적 인 요청을 차단할 수 있으므로 조심해야합니다. 예를 들어 \b 앵커를 사용하여 단어 전체를 제한하면 예기치 않은 결과가 많이 발생하지 않습니다.

+0

그 점에 대해 감사드립니다. – user1591668

관련 문제