使用@
符号作为用户的一部分是否安全?例如,可能的网址为http://example.com/@dave
。
现在的想法是,用户通常被称为“@user”,那么为什么不将用户页面设为“@username”?
答案 0 :(得分:112)
如果percent-encode为@
,您可以在HTTP URI路径中使用%40
字符。
许多浏览器仍将其显示为@
,但例如将URI复制并粘贴到文本文档中时,它将为%40
。
您可以直接在HTTP URI路径中使用@
,而不是对其进行百分比编码。
请参阅URI的path的语法。除了各种不相关的条款外,路径可能包含segment
,segment-nz
或segment-nz-nc
集中的字符。 segment
和segment-nz
由pchar
集合中的字符组成,其定义为:
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
如您所见,@
已明确列出。
segment-nz-nc
集还明确列出了@
字符:
segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )
因此,像这样的HTTP URI是完全有效的:
http://example.com/@dave
以下是维基百科页面的示例:
http://en.wikipedia.org/wiki/%22@%22_%28album%29
如您所见,"
,(
和)
字符是百分比编码的,但@
和_
直接使用
答案 1 :(得分:37)
你能在网址中使用@ -symbol吗? - 是的,你可以!
请注意,@ -character,十六进制值40,十进制值64,是URI的保留字符。它的用法是用于mailto:
URI中的电子邮件地址,例如mailto:username@somewhere.foo
,以及用于传递URI上的用户名和密码信息(这是一个坏主意,但可能):http://username:password@somewhere.foo
如果您想要在路径中包含@ -symbol的URL,则需要对其进行编码,并使用所谓的“URL-encoding”。例如:http://somewhere.foo/profile/username%40somewhere.foo
所有现代浏览器都会将其显示为http://somewhere.foo/profile/username@somewhere.foo,并将@ -sign中输入的任何内容转换为%40
,因此很容易使用。
许多网络框架也可以自动或使用帮助函数来帮助您转换为URL编码的URL。
因此,总结:是的,您可以在网址中使用 @ - symbol ,但您必须确保它已编码,因为您无法使用 @ - 字符强>
答案 2 :(得分:10)
RFC以下字符:
! *'(); :@& = + $,/? %#[]
保留并且:
保留字符的目的是提供一组分隔符 与URI中的其他数据可区分的字符。
因此不建议在没有编码的情况下使用这些字符。
答案 3 :(得分:-5)
基本没有。
@
是保留字符,只能用于其预期目的。
请参阅:http://perishablepress.com/stop-using-unsafe-characters-in-urls/和http://www.ietf.org/rfc/rfc3986.txt
它可以用于编码,但我不认为这就是你所要求的。
显然现代浏览器会处理这个问题。但是你问这是否安全并且根据RFC的规范你不应该使用它(未编码),除非它是为了它的预期目的。