我有一个网站,用户需要在访问网址之前获得http基本身份验证,请说www.mybasicauthurl.com
。基本身份验证可以以任何方式传递
浏览网址并在弹出窗口中输入用户名和密码(如果尚未填写)。
访问网址:username:password@www.mybasicauthurl.com
现在我使用方法#2通过url本身提供基本的auth凭证。这工作正常,我可以看到合法的网页,但 当我打开firebug并看到所有加载的静态文件时,它会显示类似
的内容http://username:password@www.mybasicauthurl.com/static/jquery/jquery.js
http://username:password@www.mybasicauthurl.com/static/css/styles.css
http://username:password@www.mybasicauthurl.com/static/image/image1.png
请注意网址中的前置文字username:password@
。我不希望我只是想要像
http://www.mybasicauthurl.com/static/css/styles.css
我不知道这是browser
还是apache
服务器完成的事情。
即使分享了一些我错过谷歌的有用链接,也会受到赞赏。
答案 0 :(得分:0)
如果您想避免静态资源上的HTTP身份验证,最好的办法是将其删除服务器端。
这意味着静态资源可以在没有身份验证的情况下使用,但如果静态资源中没有任何重要信息,那就很好。
应该是这样的:
# Apache < 2.4
<Location /static>
Satisfy Any
Allow from all
</Location>
# Apache >= 2.4
<Location /static>
Require all granted
</Location>
另一点。如果您不喜欢的内容是HTML源代码中存在用户名:密码,那实际上非常糟糕,并且根据浏览器版本的不同,它可能会支持也可能不支持(趋势即将被删除)。这是一个明确的文本信息,可以被拦截或存储在浏览器缓存中。 但您还使用http://
而不是https://
,这更糟糕。 用户名:密码 为浏览器的每个请求以明文形式传输,每个人都可以阅读此信息!
使用基本HTTP身份验证时,必须使用HTTPS。凭证通过简单的base64 编码传输,它只是一个ascii-7-trick编码(就像utf-8是一种编码)。因此,如果您想保护此用户名/密码信息,您还需要使用HTTPS。