비밀번호 필드와 IME

비밀번호 입력 시 IME 비활성화 이유, HTML·모바일 동작, 에디터 대응

비밀번호를 입력하는 필드에서는 OS·앱IME를 비활성화하거나 제한하는 경우가 많다. 그 이유와 HTML·모바일에서의 동작, 에디터에서 비밀번호 모드를 쓸 때의 주의점을 정리한다.


1. 비밀번호 필드에서 IME를 끄는 이유

  • IME키 입력조합문자로 바꾼다. 그 과정에서 조합 중 문자열(preedit) 이 메모리·입력 버퍼에 잠시 존재한다.
  • 키로깅·중간 조합 문자열 노출 등 보안 이슈를 줄이기 위해, 많은 OS비밀번호 필드에 포커스가 있을 때 IME를 비활성화하거나 일반 텍스트만 받도록 제한한다.
  • 실제 동작은 OS·브라우저마다 다르다. “비밀번호 필드에서는 IME를 끄는 것이 권장된다”는 정책이 있고, 그에 따라 키보드가 영문만 뜨거나 조합이 비활성화되는 환경이 있다.

2. HTML에서의 동작

  • input type="password": 브라우저는 이 필드를 비밀번호 필드로 인식한다. 포커스 시 OS에 “비밀번호 모드”를 알릴 수 있고, OS가 IME를 끄거나 키보드 레이아웃을 제한할 수 있다. 동작은 브라우저·OS에 따라 다르다.
  • autocomplete="current-password" / new-password: 자동 완성과 함께 비밀번호 필드로 취급될 수 있어, IME 동작에 영향을 줄 수 있다.
  • inputmode: inputmode="text" 등으로 키보드 타입을 힌트할 수 있으나, 비밀번호 필드에서는 OS가 inputmode를 무시하고 영문/숫자만 허용하는 경우가 있다.

3. 모바일에서의 동작

  • iOS: 비밀번호 필드에 포커스하면 기본적으로 영문 키보드가 뜨고, 한글·일본어 등 IME로 전환되지 않거나 제한될 수 있다. 버전·설정에 따라 다름.
  • Android: 비밀번호 필드에서 키보드숫자·영문만 보이도록 하고, IME 조합을 막는 경우가 있다.
  • 결과: 비밀번호 필드에서는 composition 이벤트발생하지 않거나 insertText만 오는 환경이 많다. 에디터가 비밀번호 모드일 때는 composition 처리를 해도 되지만, 실제로 조합이 오지 않을 수 있다는 점만 알아 두면 된다.

4. 에디터에서 비밀번호 모드

  • contenteditable 또는 input비밀번호 입력에 쓰는 경우(마스킹 처리 등), 보안 정책에 따라 IME를 노출하지 않도록 할 수 있다.
  • 방법: inputmode="text" 를 바꾸지 않고, 필드 타입password로 두거나, attr autocompletecurrent-password 등을 주면, OS·브라우저가 비밀번호 필드로 인식해 IME를 제한할 수 있다.
  • 커스텀 에디터에서 비밀번호 마스킹만 하고 IME는 그대로 두는 경우, composition 이벤트insertText동일하게 처리하면 된다. 다만 실제 서비스에서는 비밀번호 필드는 input type=“password” 를 쓰는 것이 일반적이고, 그 경우 IME 동작은 OS·브라우저가 결정한다.

5. 참고