이 문서는 다른 언어판 위키백과의 문서(en:Delimiter)를 번역 중이며, 한국어로 좀 더 다듬어져야 합니다. 번역에 이상이 있다면 직접 편집하시거나, 해당 글의 토론 문서에 의견을 남겨주세요.
구분 문자(영어: Delimiter)는 일반 텍스트 또는 데이터 스트림에서 별도의 독립적 영역 사이의 경계를 지정하는 데 사용하는 하나의 문자 혹은 문자들의 배열을 말한다.[1] 구분 문자의 한 예로 쉼표가 있는데, CSV(comma-separated values) 파일의 필드 구분자의 역할을 한다.
영어로 Delimit이 "범위(한계)를 정하다"라는 의미이다. 공식 문서에서는 'delim'와 같은 약어로 표시되기 때문에 주의가 필요하다.
예를 들어 istream& getline (istream& is, string& str, char delim); 와 같이 표시가 된다.
구분 문자는 데이터 스트림의 경계를 지정하는 다양한 방법 중 하나이다. 예를 들어, 선언적 표기법(Declarative notation)은 데이터 경계를 지정하는 다른 방법으로서, 데이터 스트림이 시작할 때 길이 필드에 그 스트림에 포함된 문자의 수를 지정하여 데이터의 경계를 지정한다.[2]
구분 문자 충돌은 작성자나 프로그래머가 구분자를 별도의 영역 사이의 경계로 해석하려는 의도 없이 텍스트에 구분자를 도입할 때 발생하는 문제이다.[16] 예를 들어 XML의 경우 작성자가 꺾쇠 괄호 문자를 지정하려고 할 때마다 이런 일이 발생할 수 있다.
대부분의 파일 유형에는 필드 구분 기호와 레코드 구분 기호가 모두 있으며 둘 다 충돌할 수 있다. 예를 들어, CSV (파일 형식) 파일의 경우 작성자가 필드 값의 일부로 쉼표를 포함하려고 시도할 때마다(예: salary = "$30,000") 필드 충돌이 발생할 수 있으며 필드 충돌이 발생할 때마다 레코드 구분 기호 충돌이 발생할 수 있다. 여러 줄이 포함되어 있다. 레코드와 필드 구분 기호 충돌은 모두 텍스트 파일에서 자주 발생한다.
어떤 상황에서는 악의적인 사용자나 공격자가 이 문제를 의도적으로 악용하려고 할 수도 있다. 결과적으로 구분 기호 충돌은 보안 취약점 및 악용의 원인이 될 수 있다. 악의적인 사용자는 SQL 및 HTML과 같은 언어의 구분 기호 충돌을 활용하여 각각 SQL 삽입 및 사이트 간 스크립팅과 같은 잘 알려진 공격을 배포할 수 있다.
해결책
구분자 충돌은 매우 일반적인 문제이기 때문에 이를 방지하기 위한 다양한 방법이 개발되었다. 일부 작성자는 데이터 스트림 자체에 나타날 가능성이 없는 구분 기호 문자(또는 문자 시퀀스)를 선택하여 문제를 방지하려고 시도할 수 있다. 이 임시 접근 방식은 적합할 수 있지만 반드시 데이터 스트림에 나타날 내용에 대한 정확한 추측에 따라 달라지며 악의적인 충돌에 대한 보안을 제공하지 않는다. 따라서 다른 보다 공식적인 규칙도 적용된다.
↑Meyer, Mark (2005). 《Explorations in Computer Science》. Oxford Oxfordshire: Oxford University Press. ISBN978-0-7637-3832-7.컬리 브래킷과 세미콜론이 특징인 C-스타일 프로그래밍 언어를 참조.
↑Dilligan, Robert (1998). 《Computing in the Web Age》. Oxford Oxfordshire: Oxford University Press. ISBN978-0-306-45972-6.HTML에서 사용되는 문법과 구분 문자들을 설명.
↑Watt, Andrew (2003). 《Sams Teach Yourself Xml in 10 Minutes》. Oxford Oxfordshire: Oxford University Press. ISBN978-0-672-32471-0. XML 처리 명령을 설명. P. 21.
↑Cabrera, Harold (2002). 《C# for Java Programmers》. Oxford Oxfordshire: Oxford University Press. ISBN978-1-931836-54-8. single-line 과 multi-line comments를 설명. P. 72.
↑“Smarty Template Documentation”. 2010년 3월 12일에 확인함. See e.g., Smarty template system documentation, "escaping template delimiters".