Add IDN support to existing net APIs
Jonathan Lu
luchsh at linux.vnet.ibm.com
Tue Mar 25 02:35:31 UTC 2014
Hi Michael,
I'm wondering how we could move this forward.
For the next step, is it just to draft a JEP for this change as a beginning?
or should I get supports and approvals from some other groups or leaders ?
- Cheers
Jonathan
On Fri, Feb 21, 2014 at 1:32 AM, Michael McMahon <
michael.x.mcmahon at oracle.com> wrote:
> On 20/02/14 03:15, Jonathan Lu wrote:
>
>
> Hi Michael,
>
> Thanks a lot for your comments.
>
> On Wed, Feb 19, 2014 at 6:28 PM, Michael McMahon <
> michael.x.mcmahon at oracle.com> wrote:
>
>> I think it's a good idea. Before changing anything though,
>> we would need to:
>>
>> 1. identify all APIs that could potentially be affected and figure
>> out what is
>> needed for each. For instance:
>> 1. InetAddress
>> 2. SocketPermission
>> 3. URLPermission
>> 4. HttpURLConnection
>> 5. URL/URI
>> 6. ...
>>
>> Right, I assume all APIs which accept string-represented host names
> would be affected.
> It that may not be a big change from point of view.
>
>>
>> 1.
>> 1. understand how it relates to URIs and IRIs. I haven't looked
>> into this much
>> but it seems that there might be potential for confusion given that
>> these entities
>> have their own encoding schemes already. I'm sure the issues are all
>> well thrashed out
>> already, but I'd like to see exactly how it will work in Java before
>> we start the work
>>
>> For the potential confusion, were you meaning a confusion between URI
> encoding (RFC-2396 [1]) and IDN ?
>
>
> Right. As I said, it may just be a matter of checking RFC2396 (or its
> successor RFC 3986).
> I think RFC 3986 references IDNs.
>
> Michael
>
>
>>
>> Maybe, the work is within the scope of a small JEP, if nothing else to
>> define the scope
>> of the work.
>>
>> Michael.
>>
>
> Copying core-libs-dev and security-dev to get more comments.
>
> Many thanks
>
> - Jonathan
>
> [1] http://www.ietf.org/rfc/rfc2396.txt
>
>
>>
>>
>> On 19/02/14 04:00, Jonathan Lu wrote:
>>
>> Hi net-dev,
>>
>> If a Java application tries to support International Domain Names (IDN)
>> [1], which was firstly brought in Java6,
>> it has to write additional code or wrap java.net.IDN API [2] to make the
>> conversion each time it tries to resolve
>> a non-ASCII domain name, and use the converted punycode to make
>> connections to remote host, like:
>>
>> java.net.IDN.toASCII("电 脑.info <http://xn--wnyy6w.info>");
>>
>>
>> It is easier for newly writen applications, since a wrappers can be made
>> in early design stage, but if
>> it comes to existing Java applications and third-party libraries, IDN
>> support would involve much more effort
>> like modifying the existing code base, inspecting libraries
>> interfaces/implementations, or even
>> re-implement some of the functions.
>>
>> I'm wondering if it is possible to add IDN support into existing Java
>> APIs, like
>> java.net.InetAddress.getByName(), if JDK itself supports IDN, any
>> existing applications or libraries would
>> benefit from supporting IDN automatically without any source code
>> modifications.
>>
>> Of course there's security risks regarding IDN homograph attacks [1][2],
>> so it may not be a
>> good idea to change the default behavior right now. But it would still
>> work if a simple switch can be
>> added into current JDK.
>> For example, by defining following the property in command like options
>> like
>>
>> -Djava.net.AutoIDN=true
>>
>> Any existing Java applications who wishes to support IDN feature will be
>> able to support IDN
>> without any changes to its source code or re-compilation.
>>
>> What's your opinion on this ? any comment is welcome.
>>
>> Thank you
>>
>> - Jonathan Lu
>>
>> -----------
>>
>> [1] http://en.wikipedia.org/wiki/Internationalized_domain_name
>> [2] http://download.java.net/jdk8/docs/api/java/net/IDN.html
>> [3] http://www.unicode.org/reports/tr36/
>> [4] http://en.wikipedia.org/wiki/IDN_homograph_attack
>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/net-dev/attachments/20140325/91add527/attachment-0001.html>
More information about the net-dev
mailing list