Url 根据w3c规范,用户名或密码中可以有散列吗?

Url 根据w3c规范,用户名或密码中可以有散列吗?,url,passwords,standards,w3c,Url,Passwords,Standards,W3c,使用基本身份验证创建url时: https://username:password@someurl.com/some/api/path 如果用户名或密码包含#散列符号,则该符号有效还是无效?散列通常位于URL的末尾,因此我不确定它是否是用户名和/或密码中使用的有效字符 从w3c url规范我看不出来。。。上面说,username和password应该是alphanum2,我不知道这到底是什么意思 如今,我们被鼓励更经常地仔细选择更复杂的密码,包括特殊字符,如哈希。它在下面几行定义: alph

使用基本身份验证创建url时:

https://username:password@someurl.com/some/api/path
如果
用户名
密码
包含
#
散列符号,则该符号有效还是无效?散列通常位于URL的末尾,因此我不确定它是否是用户名和/或密码中使用的有效字符

从w3c url规范我看不出来。。。上面说,
username
password
应该是
alphanum2
,我不知道这到底是什么意思


如今,我们被鼓励更经常地仔细选择更复杂的密码,包括特殊字符,如哈希。

它在下面几行定义:

alphanum2              alpha | digit | - | _ | . | +  
因此,答案显然是否定的

此外: 如今,我们被鼓励更经常地仔细选择更复杂的密码,包括像散列这样的特殊字符

是的,当然您可以将它们用于HTTP基本身份验证,但是您不能通过URL登录(警告:请注意,要在HTTP/HTTPS URI中使用
userinfo
子组件,通常所有URI的格式都是
username:password

HTTPS URI方案是,它引用RFC 3986来定义

authority
组件可以包含,其语法定义为:

在中,可以查找这些零件的定义方式。总而言之,以下是允许的字符:

  • a
    -
    z
    a
    -
    z

  • 0
    -
    9

  • -
    ~
    
    
    $
    &
    *
    +
    
    
    =

  • 任何

因此,您可以不直接在
userinfo
子组件中使用
#
,但可以以百分比编码形式(
%23
)使用它,例如,对于
foo#bar

https://foo%23bar@example.com/some/api/path
userinfo    = *( unreserved / pct-encoded / sub-delims / ":" )