基本的http身份验证并从静态内容(即image / js / css)url中删除前置文本username:password @

时间:2016-08-26 06:49:43

标签: security http authentication web http-basic-authentication

我有一个网站,用户需要在访问网址之前获得http基本身份验证,请说www.mybasicauthurl.com。基本身份验证可以以任何方式传递

  1. 浏览网址并在弹出窗口中输入用户名和密码(如果尚未填写)。

  2. 访问网址:username:password@www.mybasicauthurl.com

  3. 现在我使用方法#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服务器完成的事情。 即使分享了一些我错过谷歌的有用链接,也会受到赞赏。

1 个答案:

答案 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。