2

我对基本身份验证有疑问。该服务器是Apache httpd 服务器 2.2.12,我创建了一个受基本身份验证保护的位置:

<Location /basictest>
    AuthType Basic
    AuthName "BasicAuth di Test"
    AuthBasicProvider file
    AuthUserFile /etc/apache2/basictest.passwords
    Require valid-user
</Location>

在密码文件 /etc/apache2/basictest.passwords 我定义了两个:

用户密码

pippo:pippo£
kanji:誰か確認上記これらのフ

如果我使用Chrome (47.x)测试访问一切正常,但如果我使用Firefox (43.x)iOS (Safari/601.1) 上的 Safari Web 浏览器测试链接,则身份验证失败,因为用户的 base64 编码:password 使用了错误的字符集 (Windows-1252)!在 Chrome 测试用例中,使用的字符集是 UTF-8

Chrome ---------> cGlwcG86cGlwcG/Cow==
Safari/FireFox -> cGlwcG86cGlwcG+j

在我们等待https://www.rfc-editor.org/rfc/rfc7617实现的同时,我可以强制 FireFox 和 Safari 在 base64 加密上使用 UTF-8 作为 Chrome 的行为吗?

4

1 回答 1

2

我不确定它是否是一个错误,因为浏览器使用不同的编码/字符。

无论如何已经使用 UTF-8:

 - Opera 10  
 - Chrome

使用不同的编码,但 req 参数没有问题(所以 ASCII 仍然可以):

Firefox 1-4  (UTF-16 lower bytes)
Safari 4-5   (ISO-8859-1)
IE:Mac 5     (MacRoman)
IE 5-8       (CP_ACP)
IEMobile 6-8 (CP_ACP)
Netscape 4   (CP_ACP)
Opera 5      (CP_ACP)

https://bugzilla.mozilla.org/show_bug.cgi?id=41489#c90

关于他的疑惑。基本身份验证不支持非 ISO-8859-1 字符。

您可以尝试将.htaccess中的字符转换为UTF8,未经测试,不确定是否有效。如何将 Apache 的默认编码更改为 UTF-8?

我建议使用其他身份验证方法或创建登录页面。

如果其他同事有更好的解决方案,请告诉我。

于 2016-01-08T11:57:10.653 回答