📄 draft-ietf-idn-idna-03.txt
字号:
for the name parts that are sent to the resolver, and will always getname parts encoded in ACE from the resolver.IDNA-aware applications MUST be able to work with bothnon-internationalized host name parts (those that conform to [STD13] and[STD3]) and internationalized host name parts. An IDNA-aware applicationthat is resolving a non-internationalized host name part MUST NOT doany preparation or conversion to ACE on any non-internationalized namepart.2.1.3 Resolvers and DNS serversAn operating system might have a set of libraries for converting hostnames to nameprepped ACE. The input to such a library might be in one ormore charsets that are used in applications (UTF-8 and UTF-16 are likelycandidates for almost any operating system, and script-specific charsetsare likely for localized operating systems). The output would be eitherthe unchanged name part (if the input already conforms to [STD13] and[STD3]), or the nameprepped, ACE-encoded name part.DNS servers MUST use the ACE format for internationalized host nameparts.If a signalling system which makes negotiation possible between old andnew DNS clients and servers is standardized in the future, the encodingof the query in the DNS protocol itself can be changed from ACE tosomething else, such as UTF-8. The question whether or not this shouldbe used is, however, a separate problem and is not discussed in thismemo.2.1.4 Avoiding exposing users to the raw ACE encodingAll applications that might show the user a host name that was receivedfrom a gethostbyaddr or other such lookup SHOULD update as soon aspossible in order to prevent users from seeing the ACE. However, this isnot considered a big problem because so few applications show this typeof resolution to users.If an application decodes an ACE name but cannot show all of thecharacters in the decoded name, such as if the name contains charactersthat the output system cannot display, the application SHOULD show thename in ACE format instead of displaying the name with the replacementcharacter (U+FFFD). This is to make it easier for the user to transferthe name correctly to other programs. Programs that by default show theACE form when they cannot show all the characters in a name part SHOULDalso have a mechanism to show the name with as many characters aspossible and replacement characters in the positions where characterscannot be displayed. In many cases, the application doesn't know exactlywhat the underlying rendering engine can or cannot display.In addition to the condition above, if an application decodes an ACEname but finds that the decoded name was not properly prepared accordingto [NAMEPREP] (for example, if it has illegal characters in it), theapplication SHOULD show the name in ACE format and SHOULD NOT displaythe name in its decoded form. This is to avoid security issues describedin [NAMEPREP].2.1.5 Automatic detection of ACEAn application which receives a host name SHOULD verify whether or notthe host name is in ACE. This is possible by verifying the prefix ineach of the labels, and seeing whether or not the label is in ACE. ThisMUST be done regardless of whether or not the communication channel used(such as keyboard input, cut and paste, application protocol,application payload, and so on) is encoding with ACE.The reason for this requirement is that many applications are notACE-aware. Applications that are not ACE-aware will send host names inACE but mark the charset as being US-ASCII or some other charset whichhas the characters that are valid in [STD13] as a subset.2.1.6 Bidirectional textIn IDNA, text storage and display follows the rules in the Unicode standard[Unicode3.1]. In particular, all Unicode text is stored in logical order;the Unicode standard has an extensive discussion of how to deal with reorderglyphs for display when dealing with bidirectional text such as Arabic orHebrew. See [UAX9] for more information.3. Name Server ConsiderationsIt is imperative that there be only one encoding for a particular hostname. ACE is an encoding for host name parts that use characters outsidethose allowed for host names [STD13]. Thus, a primary master name serverMUST NOT contain an ACE-encoded name that decodes to a host name that isallowed in [STD13] and [STD3].Name servers MUST NOT have any records with host names that containinternationalized name parts unless those name parts have be preparedaccording to [NAMEPREP]. If names that are not legal in [NAMEPREP] arepassed to an application, it will result in an error being passed to theapplication with no error being reported to the name server. Further, noapplication will ever ask for a name that is not legal in [NAMEPREP]because requests always go through [NAMEPREP] before getting to the DNS.Note that [NAMEPREP] describes how to handle versioning of unallocatedcodepoints.The host name data in zone files (as specified by section 5 of RFC 1035)MUST be both nameprepped and ACE encoded.4. Root Server ConsiderationsBecause there are no changes to the DNS protocols, adopting thisprotocol has no effect on the DNS root servers.5. Security ConsiderationsMuch of the security of the Internet relies on the DNS. Thus, any changeto the characteristics of the DNS can change the security of much of theInternet.This memo describes an algorithm which encodes characters that are notvalid according to STD3 and STD13 into octet values that are valid. Nosecurity issues such as string length increases or new allowed valuesare introduced by the encoding process or the use of these encodedvalues, apart from those introduced by the ACE encoding itself.When detecting an ACE-encoded host name, and decoding the ACE, care mustbe taken that the resulting value(s) are valid characters which can behandled by the application. This is described in more detail in section2.1.4.Host names are used by users to connect to Internet servers. Thesecurity of the Internet would be compromised if a user entering asingle internationalized name could be connected to different serversbased on different interpretations of the internationalized host name.Because this document normatively refers to [NAMEPREP], it includes thesecurity considerations from that document as well.6. References[NAMEPREP] Paul Hoffman & Marc Blanchet, "Preparation ofInternationalized Host Names", draft-ietf-idn-nameprep.[RFC2119] Scott Bradner, "Key words for use in RFCs to IndicateRequirement Levels", March 1997, RFC 2119.[STD3] Bob Braden, "Requirements for Internet Hosts -- CommunicationLayers" (RFC 1122) and "Requirements for Internet Hosts -- Applicationand Support" (RFC 1123), STD 3, October 1989.[STD13] Paul Mockapetris, "Domain names - concepts and facilities" (RFC1034) and "Domain names - implementation and specification" (RFC 1035,STD 13, November 1987.[UAX9] Unicode Standard Annex #9, The Bidirectional Algorithm.http://www.unicode.org/unicode/reports/tr9/[Unicode3.1] The Unicode Standard, Version 3.1.0: The UnicodeConsortium. The Unicode Standard, Version 3.0. Reading, MA,Addison-Wesley Developers Press, 2000. ISBN 0-201-61633-5, as amendedby: Unicode Standard Annex #27: Unicode 3.1<http://www.unicode.org/unicode/reports/tr27/tr27-4.html>.B. Changes from the -02 draftEditorial changes throughout2.1.1: Major changes to the second paragraph. Added major text to fourthparagraph.2.1.4: Added to the end of the second paragraph. Added the thirdparagraph.2.1.6: Complete change.6: Added [Unicode3.1] and [UAX9].C. Authors' AddressesPatrik FaltstromCisco SystemsArstaangsvagen 31 JS-117 43 Stockholm Swedenpaf@cisco.comPaul HoffmanInternet Mail Consortium and VPN Consortium127 Segre PlaceSanta Cruz, CA 95060 USAphoffman@imc.org
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -