도구 소개
필드 길이 제한과 문자 처리는 입력 관련 버그가 많이 숨어 있는 곳입니다. 이 생성기는 정확한 길이의 문자열을 만들며, 여기에는 James Bach의 카운터스트링도 포함됩니다. 카운터스트링은 각 표식이 바로 앞에 적힌 숫자의 위치에 놓이므로(“*3*5*7*10*”의 길이는 10자) 값이 잘렸을 때 정확히 어디서 잘렸는지 알 수 있습니다. 또한 엄선한 유니코드 샘플(악센트, CJK, 오른쪽에서 왼쪽으로 쓰는 텍스트, 이모지 ZWJ 시퀀스, 결합 문자, 폭 없는 문자), 공백처럼 보이는 문자, 그리고 자체 애플리케이션의 입력 처리를 점검하기 위한 전형적인 SQL, XSS, 경로 탐색(path traversal) 프로브 문자열을 제공합니다. 데이터베이스 컬럼, HTML maxlength 속성, 사용자는 길이를 세는 방식이 모두 다르므로, 각 문자열의 JavaScript 길이, 코드 포인트 수, 보이는 문자 수(Intl.Segmenter 기준 그래핌), UTF-8 바이트 수를 함께 보여 줍니다.
사용 방법
- 길이 테스트에는 Counterstring 또는 Repeat를 선택하고, 길이를 입력하거나 255, 256, 65535 같은 대표적인 경계값을 클릭합니다.
- 문자열을 복사하거나 다운로드해 테스트 대상 필드에 붙여 넣고, 무엇이 저장되었는지, 어디서 잘렸는지, 오류가 표시되었는지 확인합니다.
- Unicode, Whitespace, Input probes 탭에서 개별 엣지 케이스 문자열을 복사합니다. 각 문자열에는 무엇을 드러내기 위한 것인지 설명이 붙어 있습니다.
- “Measure any string”(문자열 측정)에 아무 값이나 붙여 넣으면 길이와 함께 보이지 않는 문자를 드러내는 이스케이프 형태를 볼 수 있습니다.
테스트 문자열 생성기 자주 묻는 질문
이모지 하나가 2자, 7자, 11자로 계산되는 이유는 무엇인가요?
JavaScript 문자열 길이는 UTF-16 코드 유닛 수를 셉니다. 기본 다국어 평면(BMP) 밖의 이모지는 2개를 사용하고, 가족 이모지 같은 ZWJ 시퀀스는 여러 이모지를 U+200D로 연결하므로, 보이는 문자 하나의 길이가 11이고 UTF-8로는 25바이트가 될 수 있습니다. 제한이 어떤 단위를 세는지 정하고 명시적으로 테스트하세요.
255와 256 중 어느 길이를 테스트해야 하나요?
둘 다, 그리고 제한값 자체와 그 양옆까지 테스트하세요. 필드가 255자를 허용한다면 254, 255, 256을 테스트합니다. 카운터스트링을 쓰면 저장된 값의 끝부분이 몇 글자가 살아남았는지 보여 주므로 결과를 읽기 쉽습니다.
SQL·XSS 프로브 문자열을 사용해도 안전한가요?
QA에서 입력이 파라미터화되고 출력이 인코딩되는지 확인할 때 쓰는 표준적이고 파괴적이지 않은 프로브입니다. 본인이 소유했거나 테스트 권한을 받은 애플리케이션에서만 사용하세요. 올바르게 만들어진 시스템은 이를 그냥 텍스트로 저장하고 표시합니다.