Mikko Hyppönen, 컴퓨터 보안에 대한 자신의 컴퓨터 바이러스에 대한 작업과 TED talks 알려진 컴퓨터 보안 전문가가 몇 달 전에 트윗 된 위 그림 문자로 발음 구별 부호를 방지하는 방법. 존경의 의미에서, 나는 단지 그것의 이미지를 게시 할 것이지만 당신은 아이디어를 얻는다. 그것은 분명히 당신이 당신의 웹 사이트 주변에 퍼져 있고 방문자들을 괴롭히는 것을 원하지 않을 것입니다.
추가 검사시 문자는 태국어 알파벳 87 자 이상의 발음 구별 부호와 결합 된 문자로 나타납니다 (한도가 한계입니까?). 이것은 보안, 로컬라이제이션 및 이러한 입력을 처리하는 방법에 대해 생각하게했습니다. Stacking에서 this question으로 검색 한 다음 Michael Kaplan의 블로그 게시물 stripping diacritics에 내 검색을 안내합니다. 방법이 어떤 경우에 유용 할 것입니다,하지만에서
StringBuilder sb = new StringBuilder();
foreach (char c in "façade".Normalize(NormalizationForm.FormD))
{
if (char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark)
sb.Append(c);
}
Response.Write(sb.ToString()); // facade
내가 볼 수 있습니다 : 그것은, 그는 하나 (간결하게하기 위해 여기 간체)의 "기본"문자로 문자열을 분해하는 방법을 보여줍니다 사용자 입력 조건에 따라 모든 발음 구별 부호가 제거됩니다. Kaplan이 지적한대로 일부 언어로 발음 구별 부호를 제거하면 단어의 의미가 완전히 바뀔 수 있습니다. 이것은 질문을 구걸한다. 사용자 입력/출력에서 발음 구별 부호는 어떻게 허용 하나, Mikko Hyppenen과 같은 극단적 인 경우는 제외한다.
정적 클래스/유틸리티 클래스를 통한 화이트리스트? 그리고 그것은 프로그래머들에게 갈 권리가 있습니다 .stackexchange.com. –
@MonsterTruck, 공정하지만, 화이트리스트는 정확히 무엇입니까? 이들은 내가 말하는 유니 코드 문자입니다. –
기본 문자 당 최대 분음 기호 수를 설정할 수 있습니다. 베트남인과 그리스인이 여전히 괜찮으나 미친 경우는 거부 할 수있을 정도로 충분히 높은 가치를 선택하십시오. –