2012-04-26 4 views
1

사용자 입력 유니 코드에 대한 실제 위험, 사용자 에이전트/브라우저 등에서 처리되지 않는 것이 있습니까?유니 코드 입력 위험

분명히 서버에서 클라이언트로 스푸핑에 대한 실질적인 위협이 있습니다. 그러나 유니 코드 입력을 처리 할 때 어떤 구체적인 '공격'(있는 경우) 또는 불만 사항을 알아야합니까?

질문은 언어에 영향을받지 않지만 GWT 응용 프로그램에 대한 보안 관련 사항을 염두에두고 있습니다.

+2

* 사용자가 제어하는 ​​유니 코드 문자열을 출력하는 것은 매우 문제가 될 수 있습니다. 그러나 나는 입력에 많은 이슈를 보지 못했다. – CodesInChaos

+2

사용자가 제어하는 ​​유니 코드를 출력 할 때 어떤 문제가 발생합니까? –

답변

4

나는 사용자 제어 유니 코드 문자열을 몇 가지 문제를 생각할 수 :

  1. 는 유니 코드에 해당하는 문자열을 표현하는 여러 가지 방법이 있습니다. 예를 들어, ä은 단일 코드 점으로 표현하거나 a 다음에 결합 ¨으로 표시 할 수 있습니다. 유니 코드 표준화는 이러한 문제의 대부분을 해결합니다.
  2. 이상한 캐럿 움직임을 허용하는 문자가 있습니다. 다른 사람의 메시지 위에 메시지를 올릴 수있는 채팅에 대해 들었습니다. 관리자가 실제로 누가 그 메시지를 보냈는지 알지 못하기 때문에 부적절한 말을하는 것을 금지 시켰습니다.
  3. 비슷한 모양의 문자가 있습니다. 예를 들어 ASCII 또는 ASCII와 광학적으로 구별 할 수없는 러시아어 또는 그리스어 문자가 있습니다. 문자열을 고유하게 식별해야하는 것은 매우 문제입니다. 예를 들어 사용자 이름 또는 도메인. 고전과 유사한 lI 문제, 훨씬 더 나쁜 것을 제외하고.
  4. UTF-8 및 UTF-16을 사용하면 코드 포인트 중간에서 문자열을 분할 할 때 몇 가지 문제가 발생할 수 있습니다.
  5. 문자열에 대한 일부 조작으로 예기치 않게 길이가 변경 될 수 있습니다. 예를 들어 문자열을 대문자로하면 더 길어질 수 있습니다.

나는 확실히 사용자 입력의 가장 큰 위험은 "특수 문자"가있는 상황에서 해당 입력을 사용하는 유니 코드

+1

1. 이것은 실제로 "위험"이 아니라 단지 고려해야 할 사항입니다. 4.가 문제가되면 문자열/인코딩을 올바르게 처리하지 못합니다. 5. 그것이 "위험"인지 여부는 언어가 얼마나 낮은지에 따라 달라질 수 있습니다.나는 2.와 3.가 사용자에게 문제를 일으킬 수있는 점이라는 데 동의한다. – deceze

+1

어느 것이 후속 질문으로 이어 지나요? GWT와 같은 언어/프레임 워크에 의해 내부적으로 이미 다루어 진 문제는 얼마나됩니까? (예를 들어 유니 코드 정규화를 생각하고 있습니다.) –

+1

도우미 기능이 있지만이 문제의 대부분을 알고 있어야합니다. 그들은 자동적으로 해결 될 수 없습니다. – CodesInChaos

5

에 전문가는 아니지만, 아마 더 문제가 있습니다. 즉, SQL 쿼리로 연결하거나 HTML로 출력하는 것은 당연합니다. 응용 프로그램의 일부 동작이 문자열 (SQL 쿼리 또는 HTML 페이지와 같은)에 의해 제어되고 사용자가 이러한 문자열을 제어하고 자신의 명령을 삽입 할 수있는 경우 위험합니다.

다른 인코딩에 비해 유니 코드에 특별한 점은 없습니다. 사용자 환경의 특수 문자는 잘 정의되어 있으므로 사용자 입력을 이스케이프, 필터 또는 삭제하여 이러한 특수 문자를 특별하지 않게 렌더링하면됩니다. 이것은 다른 인코딩에도 마찬가지로 필요합니다. 이스케이프/필터링/위생 처리 기능이 올바른 인코딩을 인식하여 작업을 올바르게 수행 할 수 있도록주의해야합니다.

이외에도 유니 코드로 인코딩 된 텍스트는 텍스트입니다. 특수 문자를 중립 처리하고 인코딩을 처리하면 텍스트에만 위험이 없습니다. 당신의 사용자 들과는 별도로 특정 목적을 위해 닮은 문자를 이용하거나 sbuıɥʇ pɹıǝʍ buıʇı explo을 이용하는 것이 일반화 된 위험에 대한 것이 아닙니다.

관련 문제