.htaccess密码保护有多安全?

Ste*_*eve 40 apache security .htaccess

使用.htaccess保护目录的密码是防止未经授权的用户看到其文件的最佳方法吗?是否有任何替代方法可以保护目录的内容,同时仍然让经过身份验证的人可以查看它?

此外,有人试图强行进入,导致服务器紧张吗?

reg*_*ero 66

有几点需要注意:

通过使用<Directory>主配置(或虚拟主机配置)中的指令,始终可以在没有.htaccess的情况下在.htaccess中添加安全性.它会更快(如果你删除.htaccess的完全支持AllowOverride None),你不会有人改变你.htaccess的风险.

有几种方法可以在.htaccess文件中添加安全性,其中一种方法是使用Basic HTTP Authentification和.htpasswd文件.这些.htpasswd文件不应位于Web目录根目录中.另一种可能性是使用HTTP摘要身份验证,限制是非常老的浏览器不支持它(如IE6).

我们经常遇到HTTP Basic Authentification.这是一种非常弱的保护,仅仅是因为它的工作方式.在第一次请求时,您被拒绝,然后您的浏览器会要求您输入密码并登录,并记住所请求的网络服务器的密码登录关联.然后,对于发送到此Web服务器的每个请求,直到您关闭浏览器,登录名和密码将添加到请求标头中,未加密.只有一个base64编码应用于字符串'Yourlogin:Yourpassword',使其看起来像纯ASCII7字符串并防止编码问题.

所以任何人嗅探你的请求(wifi热点,中间的人,本地网络,回声开关等)都会知道你的密码和登录.坏.规则是":

如果连接不是HTTPS(SSL),则永远不要使用Basic HTTP Authentification.

如果您的网络服务器完全没有HTTPS问题(请参阅底部的编辑),则明文/密码将通过SSL加密.

对于暴力问题(是的,有些人可以尝试强制登录/密码,除非你调整mod_security模块以防止这种情况),htpasswd页面安全性考虑非常清楚:

使用crypt()算法时,请注意只使用密码的前8个字符来形成密码.如果提供的密码较长,则会以静默方式丢弃多余的字符

和:

在Windows和MPE平台上,使用htpasswd加密的密码长度不得超过255个字符.较长的密码将被截断为255个字符.

因此,对密码使用SHA 编码哈希(即使它没有被腌制).

让经过身份验证的用户浏览目录内容的另一种方法是在应用程序(PHP,Tomcat等)中处理目录列表和文件上载,而不是使用apache自动列表.在安全性方面,自动列表模块(mod_autoindex)是您在运行的apache上不应该拥有的.

编辑

如果您只想使用HTTP身份验证来保护某些网址,则不需要完整的HTTPS服务器.你真正需要的是所有这些受保护的URL应该是https,如果未受保护的URL在http域中,则不会使用身份验证头,因为这是一个不同的域(并且域通过身份验证头).因此,您可以在http域中为这些URL添加基本重定向规则,可能是这样的:

RedirectMatch 301 ^/secure/(.*)$ https://www.example.com/secure/$1
Run Code Online (Sandbox Code Playgroud)

  • SHA不是编码,而是加密散列函数. (3认同)
  • 很好的答案 - 但要注意digest auth不能代替SSL - 它不能防止MITM篡改POST变量. (2认同)