ZF-6133: Zend_Validate_Hostname fails if Punycode is used for IDN
Description
If ACE is used for an IDN like müller.de (which is xn--mller-kva.de) Zend_Validate_Hostname fails, because the ACE prefix has a dash in the third and fourth position. At least the IDNA prefix xn-- should be supported, as there are a couple of use-cases, that allow using ACE in RFC 3490.
As exposing the user to raw ACE should be avoided if possible the support for xn-- can be added as an option, which defaults to false.
Reproduce with: <?php require_once 'Zend/Validate/Hostname.php'; $validate = new Zend_Validate_Hostname(); var_dump($validate->isValid('müller.de')); var_dump($validate->isValid('xn--mller-kva.de')); ?>
Result: bool(true) bool(false)
Expected: bool(true) bool(true)
Comments
Posted by Nico Edtinger (nico) on 2009-03-26T09:29:23.000+0000
Task can be assigned to me. Some feedback would be nice.
Posted by Thomas Weidner (thomas) on 2009-03-26T12:56:14.000+0000
Supporting punycode raises some other issues which have to be solved.
One is coding: It has to be checked if the resulting IDN is supported after punycode has been translated. Second is length: Punycode produces longer strings then IDN which would fail when their length is checked.
I see this not as bug but as improvement as punycode is until now not supported.
Posted by Thomas Weidner (thomas) on 2009-03-31T03:36:33.000+0000
New feature implemented with r14556