요약
- RFC 1523은
text/enriched를 의도적으로 제한했다. ASCII 또는 호환 본문은 원시 상태로 표시되어도 어느 정도 견딜 만해야 했고, 최소한의 MIME 리더는 서식 명령을 제거해 읽을 수 있는 산문을 복원할 수 있었다. - 그 폴백은 동등성이 아니라 통제된 투영이었다. 알 수 없는 효과, 숨은 매개변수, 수신자가 고른 렌더링, 다른
multipart/alternative선택은 모든 보이는 단어가 살아남았더라도 사라질 수 있었다.
무언가를 안전하게 잃도록 설계된 형식
리치 텍스트는 보통 자신이 무엇을 더할 수 있는지를 내세운다. 1993년 9월 Informational로 공개된RFC 1523은 수신자가 무엇을 제거하기를 기대했는지를 보여준다는 점에서 더 시사적이다. 이 문서의text/enriched미디어 타입은RFC 1341의 초기text/richtext를 개선한 것이었다. 목표는 워드프로세서를 재현하는 것이 아니었다. 모든 독자가 똑같이 정교한 환경을 갖추지 않아도 강조, 배치, 모양에 관한 소박한 어휘를 인터넷 메일로 전달하는 것이었다.
이 명세는 특이한 시험을 부과했다. 텔레타이프 지향 시스템이 서식을 삭제하고도 이해 가능한 텍스트를 남길 수 있어야 한다는 것이었다. 문자 집합이 ASCII이거나 8비트 상위 집합이라면, 원시 데이터를 표시하는 비 MIME 리더조차도 어느 정도 읽을 만한 것을 만나야 했다. 어휘가 작을수록 수신자의 평범한 도구에서 올바르게 렌더링될 가능성이 높았기 때문에 기능은 의도적으로 좁게 유지되었다.
이는 서식이 장식일 뿐이라는 주장이 아니었다. 어떤 손실은 견딜 수 있어야 하는지에 관한 엔지니어링 결정이었다. 발신자는 굵게, 가운데 정렬, 고정 폭, 들여쓰기된 텍스트를 요청할 수 있었다. 성능이 낮은 리더는 그 요청을 버리고도 안에 든 단어를 드러낼 수 있었다. 상호운용성은 모든 표시를 동일하게 만드는 것이 아니라 저하된 보기를 정의하는 데서 나왔다.
꺾쇠괄호가 담아낸 작은 문법
명령은 꺾쇠괄호로 둘러싸인, 대소문자를 구분하지 않는 ASCII 이름이었고 60자로 제한되었다. 리터럴 보다 작음 기호는<<로 표기했다. 대부분의 서식 환경은 짝을 이루는 닫는 명령을 요구했고, 쌍은 균형을 이루고 올바르게 중첩되어야 했다.
그 규율은 작업 부담을 작성자 쪽으로 옮겼다. RFC는 추가 부담을 인정한 뒤 그 대가를 설명했다. 표시기는 스택을 유지할 수 있었다. 여는 명령은 상태를 밀어 넣고, 대응하는 닫는 명령은 이전 상태를 복원했다. 환경이 잘못 교차된 경우도 그럴듯하게 처리될 수는 있었지만, 그것은 약속된 문법의 일부가 아니었다.
줄바꿈에도 의미 규칙이 있었다. CRLF 하나는 공백이 되었다. 연속된 N개의 CRLF 시퀀스는 N−1개의 표시 줄바꿈이 되었다. 따라서 전송 시스템은 긴 물리적 줄을 감쌀 수 있었고, 렌더링된 메시지에 반드시 새 문단을 만들지는 않았다. 빈 줄은 여전히 눈에 보이는 구분으로 남았다.
이 규칙은 타이포그래피처럼 보이지만 증거 경계도 정의했다. 수신된 옥텟, 재구성된 논리 텍스트, 표시된 문단 배치는 서로 관련된 기록이지 서로 바꿔 쓸 수 있는 기록이 아니었다. 게이트웨이가 줄바꿈을 삽입했거나 파서가 연속된 CRLF를 잘못 처리했다면, 최종 화면만으로는 어느 주체가 구조를 바꿨는지 설명할 수 없었다.
명령을 무시하는 것도 명세된 동작이었다
RFC 1523은 알 수 없는 서식 명령이 아무 동작도 하지 않는 no-op으로 작동하도록 요구했다. 그 안에 든 자료는 남아 있었지만 요청된 효과는 사라졌다.X-로 시작하는 이름은 비공개 실험용으로 예약되었고, 공식 추가에는 별도의 인터넷 문서가 필요했다.
이로써 모든 낯선 토큰을 치명적으로 취급하는 것보다 확장이 안전해졌다. 구형 리더는 신형 독자를 위해 작성된 텍스트를 통과시킬 수 있었다. 그러나 성공에는 한계가 있었다. 빨간 경고, 특수 주석, 미래의 의미 구분은 평범한 산문으로 붕괴할 수 있었다. 리더는 문자를 보존했지만 작성자가 의도한 신호는 잃은 것이다.
매개변수는 그 구분을 더 날카롭게 만들었다.<param>환경은 다른 명령에 데이터를 공급했다. 리더는 그 데이터를 해석하거나 무시할 수 있었지만, 사용자에게 표시해서는 안 되었다. 따라서 최소 구현은 서식 토큰과 매개변수 내용을 모두 제거했다. 보이는 폴백은 유창할 수 있었지만 확장별 값은 완전히 사라졌다.
그래서 '메시지를 읽을 수 있었다'는 완전한 출처 주장이 아니다. 어떤 파서가 어떤 명령을 인식했는지, 매개변수로 무엇을 했는지, 어떤 표시 결정을 로컬에서 내렸는지를 물어야 한다.
수신자는 여전히 화면을 선택했다
이 형식은 하나의 시각적 결과를 고정하지 않았다. 글꼴 가용성, 줄 너비, 들여쓰기 단위, 양쪽 정렬, 효과 조합은 수신 환경에 따라 달라졌다. 리더가 동시에 주어진 지시를 모두 따를 수 없을 때는 가장 안쪽의 인식된 명령을 우선할 수 있었다. 따라서 올바른 파싱이 여러 정당한 화면을 낳을 수 있었다.
두 가지 특수 환경은 평문 복구조차 상태를 필요로 했음을 보여준다.nofill은 일반적인 채우기와 CRLF 처리를 비활성화하면서 다른 enriched 명령은 활성 상태로 두었다.verbatim은 더 나아가 자신의 닫는 토큰까지 채우기, 양쪽 정렬, 내장 서식 해석을 억제했다. 도구가 꺾쇠괄호로 둘러싸인 모든 문자열을 한 번에 무작정 삭제하는 것은 안전하지 않았다. 문법 자체가 언제 바뀌었는지 알아야 했다.
RFC는 최소한의 적합성 경로를 명시했다. 리터럴 구분자와 관련 환경을 인식하고, 매개변수와 서식 명령을 제거하고, 줄바꿈 규칙을 적용하는 것이다. 그것은 유용한 하한이었다. 그러나 강조, 페이지 구조, 숨은 값, 인간의 해석이 보존되었음을 보증하지는 않았다.
대체 파트가 불평등한 보기를 명시했다
작은 enriched 어휘를 넘어서는 콘텐츠의 경우, RFC 1523은multipart/alternative를 가리켰다. 정교한 작성자는 폭넓게 읽을 수 있는text/enriched파트와 ODA 같은 더 풍부한 표현을 함께 넣을 수 있었다. 능력 있는 수신자는 더 풍부한 파트를 선택할 수 있었고, 다른 수신자는 enriched 파트를 선택할 수 있었다.
둘 다 같은 멀티파트 객체를 성공적으로 수신했으면서도 서로 다른 표현을 읽었을 수 있다. 따라서 선택된 대안, 기능 협상, 렌더링 경로는 역사적 사건의 일부였다. '전달이 성공했다'고만 말하면 그 사람이 실제로 무엇을 보았는지를 결정한 선택이 지워진다.
문서 자체는 이 메커니즘이 보안 문제를 도입하지 않는다고 말했다. 그 문장은 1993년의 평가에 속한다. 이후의 확장, MIME 핸들러, 파서 구현, 주변 애플리케이션이 보편적으로 안전했다는 증거는 아니다. 방어 가능한 역사적 주장은 더 좁다. RFC 1523은 표현 언어의 경계를 정하고 성능이 낮은 수신자가 어떻게 폴백할 수 있는지를 정의했다.
RFC 1563은 몇 달 만에 RFC 1523을 폐기했고,RFC 1896은 나중에 RFC 1563을 폐기했다. 그 계보는 명세의 개정을 보여줄 뿐, 배포된 소프트웨어가 동시에 교체되었음을 보여주지는 않는다.
고정된 출처는 특정 리더, 배포, 메시지를 지목하지 않는다. 채택 수준이나 사용자 반응을 측정하지 않고, 관찰된 잘못된 입력 결과도 보고하지 않는다. 그것들은 형식 규칙과 문서 계보를 확립할 뿐, 특정 설치의 동작을 말하지 않는다.
오래 남는 기록은 계층적이다. 원본 바이트와 문자 집합, 물리적 줄 구조, 파싱된 명령 스택, 지원되거나 알 수 없는 명령에 대한 결정, 매개변수 값과 그것이 숨겨졌는지 무시되었는지, 선택된 멀티파트 대안, 렌더링된 출력, 수신자의 해석을 보존하라. 읽을 수 있는 폴백은 손실을 견뎌 내기 때문에 가치가 있다. 결코 중요한 것이 아무것도 손실되지 않았다는 증거로 오해되어서는 안 된다.
출처
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





