Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html URL中的UTF-8字符_Html_Url_Utf 8 - Fatal编程技术网

Html URL中的UTF-8字符

Html URL中的UTF-8字符,html,url,utf-8,Html,Url,Utf 8,我刚刚偶然发现了以下文章: 本文讨论在URL中使用UTF-8字符 我想知道使用它是否安全 我的设置(浏览器+操作系统)与写这篇文章的人基本相同。所以我不能真正测试它 所以。。。在URL中使用UTF-8字符安全吗 还有一个额外的问题:如果安全的话,为什么没有多少网站使用它呢?UTF-8还有很长的路要走。。。绝对不安全 在文化上,我喜欢这样。我无法想象用中文字母书写/记住URL地址,或者他们也这么做。任何支持中文字母的浏览器都可以 然而,IDN在不同的web服务器、代理和其他互联网基础设施上没有得

我刚刚偶然发现了以下文章:

本文讨论在URL中使用UTF-8字符

我想知道使用它是否安全

我的设置(浏览器+操作系统)与写这篇文章的人基本相同。所以我不能真正测试它

所以。。。在URL中使用UTF-8字符安全吗


还有一个额外的问题:如果安全的话,为什么没有多少网站使用它呢?

UTF-8还有很长的路要走。。。绝对不安全


在文化上,我喜欢这样。我无法想象用中文字母书写/记住URL地址,或者他们也这么做。

任何支持中文字母的浏览器都可以

然而,IDN在不同的web服务器、代理和其他互联网基础设施上没有得到很好的支持,因此大多数网站都不支持IDN,请确保人们能够访问IDN


而且,正如@Rook所提到的,以这种方式使用UTF-8(例如XSS)仍然存在安全问题。

url中的Unicode字符(我不是说域名)可以安全使用。如果你在你的网站上使用它们,就没有安全风险。(如Oded所说,如果最终用户访问页面上使用unicode的欺诈网站,则会有一些风险)


唯一真正的问题是旧浏览器(和操作系统)如何显示它们。不支持它们的浏览器将在url中显示那些丑陋的百分比编码字符。您可能还必须对html中的URL进行百分比编码,以防较旧的浏览器无法为您进行编码,并且用户无法跟踪链接(这很糟糕)。现代浏览器在地址栏中显示解码后的url,但使用编码版本发送请求,因此用户总能看到漂亮的unicode字符。

您有关于UTF-8和XSS的示例吗?!代理的基础设施如何与idn发生问题。域名转换为punicode,与旧域名100%兼容。路径中的Unicode是逐字节百分比编码的。百分比编码与HTTP一样古老,因此应该适用于每个系统。也许有些Web服务器可能会遇到问题,特别是因为将URL映射到可能不支持unicode文件名的文件系统。这个问题只是间接地与IDN有关。IDN仅适用于域名,不适用于URL中的任何其他元素。IDN和URL编码字符之间没有特定的关系。您何时需要记住URL的查询部分?他说的不是UTF8域名(顺便说一句,它也存在着),所以可以安全地假设,没有人需要手动输入字符。我同意这个答案。至于浏览器支持,这个问题是相关的:它绝对不“安全”。没有使用URL编码的UTF-8字符的标准,也没有为非ascii字符指定字符集的方法。你可以自由使用任何你喜欢的URL编码字符,但绝对不能保证任何浏览器会以任何特定的方式解释或显示它们,而且毫不奇怪,YMMV。很好。我确实在URL、URI或IRI规范中找不到除ascii以外的任何字符编码。RFC3986中有一条注释:“假定URI与周围文本采用相同的字符编码”-因此可以在UTF-8 HTML文档中的URL中使用UTF-8,用户代理将知道如何处理它们,但一旦它不在该文档中(例如,您将其发送给某人),它就会丢失上下文元数据,并且只能是ASCII格式。它还说,协议可以显式定义编码,但HTTP不能做到这一点(确实如此,但它是ASCII)