양방향 텍스트 제어문자 검사기
브라우저 처리텍스트 속 RLO·LRE·RLI 같은 보이지 않는 양방향(bidi) 제어 문자를 행:칸 위치와 뜻으로 찾아내고, 닫히지 않은 제어를 경고하며 제거한 텍스트를 함께 보여 줍니다.
- 파일·이미지·문서 처리 도구는 브라우저 안에서 처리되더라도 원본에 개인정보나 민감 정보가 포함될 수 있습니다. 공유·제출 전 원본과 결과를 한 번 더 확인하세요.
U+202E(RLO) 같은 양방향 제어 문자는 화면에 보이지 않으면서 뒤에 오는 글자의 표시 순서를 뒤집습니다. 'invoicefdp.exe'처럼 실행 파일을 PDF로 위장하거나, 코드 리뷰에서 보이는 내용과 실제 동작이 다른 'Trojan Source' 공격에 악용됩니다.
양방향 제어 문자 1개를 찾았습니다. RLO·LRO는 파일 이름이나 코드의 보이는 순서를 속이는 데 악용될 수 있습니다. 1행: 닫히지 않은 방향 제어(삽입·강제 1개, 격리 0개)가 줄 끝까지 영향을 줍니다. 위치(행:칸) 코드 이름 설명 1:8 U+202E RLO 오→왼 강제(뒤 글자를 뒤집어 보이게 함) 제거한 텍스트: invoicefdp.exe
양방향 텍스트 제어문자 검사기 사용 가이드
U+202E(RLO) 같은 양방향 제어 문자는 화면에 보이지 않으면서 뒤에 오는 글자의 표시 순서를 뒤집습니다. 'invoicefdp.exe'처럼 실행 파일을 PDF로 위장하거나, 코드 리뷰에서 보이는 내용과 실제 동작이 다른 'Trojan Source' 공격에 악용됩니다.
이 도구는 텍스트를 한 글자씩 살펴 LRM·RLM·ALM 표시 문자, LRE·RLE·LRO·RLO 삽입·강제 문자, LRI·RLI·FSI·PDI 격리 문자를 모두 찾아 몇 행 몇 번째 칸에 있는지와 각 문자의 역할을 표로 보여 줍니다.
삽입·강제 문자를 PDF로, 격리 문자를 PDI로 닫지 않은 줄은 그 뒤 내용 전체가 영향을 받으므로 따로 경고합니다. 맨 아래에는 제어 문자를 모두 지운 텍스트를 보여 줘 실제 글자 순서를 확인할 수 있습니다.
사용 방법
- '입력' 칸에 의심되는 파일 이름, 코드, 메시지를 붙여 넣습니다.
- '실행'을 누르면 찾은 제어 문자의 위치·코드·이름·설명 표와 경고가 나옵니다.
- 아래의 '제거한 텍스트'로 실제 글자 순서를 확인하고 필요하면 그 텍스트를 사용합니다.
예시: PDF로 위장한 실행 파일 이름
invoice[U+202E]fdp.exe (RLO 문자가 들어 있어 화면에는 invoiceexe.pdf처럼 보임)
양방향 제어 문자 1개를 찾았습니다. RLO·LRO는 파일 이름이나 코드의 보이는 순서를 속이는 데 악용될 수 있습니다. 1행: 닫히지 않은 방향 제어(삽입·강제 1개, 격리 0개)가 줄 끝까지 영향을 줍니다. 위치(행:칸) 코드 이름 설명 1:8 U+202E RLO 오→왼 강제(뒤 글자를 뒤집어 보이게 함) 제거한 텍스트: invoicefdp.exe
제어 문자를 지우면 실제 확장자가 .exe라는 것이 드러납니다.
이럴 때 쓰면 좋아요
- 메일로 받은 첨부 파일 이름이 위장되었는지 확인할 때
- 코드 리뷰나 PR에 숨은 Trojan Source 문자가 있는지 점검할 때
- 아랍어·히브리어가 섞인 문장의 표시가 이상할 때 원인을 찾을 때
- 사용자 입력에서 방향 제어 문자를 걸러 내기 전에 어떤 문자가 들어오는지 볼 때
문제가 생겼을 때
LRM·RLM은 숫자와 문장 부호 방향을 바로잡는 정상적인 표시 문자일 수 있습니다. 문제는 주로 RLO·LRO처럼 순서를 강제로 뒤집는 문자입니다.
의도적으로 넣은 방향 표시까지 지워진 것입니다. 오른쪽에서 왼쪽 언어라면 HTML의 dir 속성으로 방향을 지정하세요.
활용 팁
- GitHub는 숨은 양방향 문자가 있는 코드에 경고를 표시합니다. 경고가 보이면 이 도구로 해당 줄을 붙여 넣어 정확한 위치를 확인하세요.
- 파일 업로드나 회원 이름처럼 방향 제어가 필요 없는 입력은 서버에서 U+202A~202E, U+2066~2069를 막아 두는 것이 안전합니다.
자주 묻는 질문
이 도구는 방향 제어 문자만 다룹니다. 제로폭 문자와 다른 숨은 문자는 보이지 않는 유니코드 문자 검사기로 확인하세요.
줄마다 1부터 글자(코드 포인트) 단위로 셉니다. 이모지처럼 두 단위로 저장되는 글자도 한 칸으로 셉니다.
아니요. 검사는 브라우저 안에서만 이루어지고 텍스트는 어디에도 보내지 않습니다.