您是否正在开发一个需要让其他人看到但不想让全世界看到网站? 用密码保护网站(或网站内的子目录)实际上非常容易。
.htaccess 文件
AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/the/directory/you/are/protecting/.htpasswd
require valid-user
此处文件的精确路径非常重要。 如果您弄错了,它仍然会要求您输入密码,但似乎什么都无法正常工作。 在 Media Temple 上,我的路径如下所示
/home/21410/domains/css-tricks.com/html/examples/PasswordProtected/.htpasswd
您应该能够在该目录中的页面上回显 phpinfo(); 以查看该目录。
.htpasswd 文件
css-tricks:csmBH6tTLNZBE
这就是 .htpasswd 文件的内容应该是什么样子。 每行一个用户名和密码,用冒号隔开。 注意密码是加密的。 您需要使用特殊工具以这种方式(MD5)加密您的密码。 David Walsh 有一个 专门用于此的工具。
事实上,我显然最初是从 David 那里学到的,因为几乎与 完全相同的提示 就在他的网站上。 不过,我认为它值得重新发布,因为这是一个非常有用的工具,应该放在您的工具箱里。
查看实际效果
登录名/密码为 css-tricks/css-tricks
有点新手问题,但这适用于任何应用程序服务器,还是只适用于 Apache?
谢谢…
感谢您的参考!
我假设您想教育普通用户,而且您一开始做得很好:评论插图非常有用。 但然后突然出了点问题——这该怎么办
我完全不知道你在说什么!
我也迷失在那里。 可惜。 加密也是吗? 这一切都太含糊了? 该工具非常适合加密,但您如何实现它?
这是一个非常有用的链接,可以找到 .htpasswd 文件的路径。 http://www.htaccesstools.com/articles/full-path-to-file-using-php/
Peter——查看 http://kb.iu.edu/data/abeq.html 获取更多信息。 其中一些内容是针对大学的,但这本入门教材还不错。
感谢您提供清晰简洁的解释。 我知道 .htaccess 文件会保护其路径下的所有子目录,所以这看起来是一个很好的方法。
您知道 .htpasswd 文件的安全程度吗? 如果它可以读取,并且 MD5 加密是可逆的,那么是否意味着它可以被解密?
谢谢 :)
是的,但您首先需要知道密码才能访问加密的密码,因此如果您不知道密码,就无法对其进行解密。
谢谢!
它为我们提供了许多可能性的想法
谢谢
这是一个很棒的资源,尤其是在制作尚未公开的测试版网站时!
对于 Robert Augustin:MD5 是一种单向密码哈希函数。 因此,无法解密哈希密码以获得其原始值。 此身份验证方法的工作方式(我假设)是用户输入密码,该密码将被哈希并与存储的该用户名密码哈希进行比较。 如果两者匹配,则身份验证成功。 这就无需存储纯文本或可解密密码。 然而,MD5 确实存在问题,并且可以找到生成与存储密码相同的哈希值的文本字符串。 为防止这种情况,在哈希时应使用“salt”值..
@ Kyle——感谢您的快速回复和有用的链接,非常感谢!
我将确保认真仔细地阅读所有内容,因为我不想将一些文件放在我网站的目录中,结果发现它变得完全无法访问 ;-)
Anton,
谢谢。 如果我理解正确,这需要一个哈希生成器,在加密字符串之前添加盐值。 我不知道上面提到的那个(由 David Walsh 提供)是否这样做——但我现在知道它是如何工作的了 :)
新手问题:我如何保存 .htpasswd 和 .htaccess 文件? 我在 TextMate 中保存它们时遇到了麻烦,当我通过 FTP 重新命名它们后,它们就会消失。 我哪里做错了? 此外,从 1 到 10,这有多安全? 我可以用它来保护真正的内容,还是更适合测试版网站等?
喜欢这些东西,无论如何,您能否以 ASP 为中心写更多关于此主题的信息? 感谢您喜欢这个网站
@Nate:一些 FTP 客户端不会显示您 .htaccess 和 .htpasswd 文件。
在 Panic 的“Transmit”或“Coda”中,有一个用于“显示隐藏文件”的菜单选项。 在 OS X 中,任何以句点开头的文件都是“隐藏的”,因此您需要将其打开。
我发现有些服务器会显示我隐藏文件,而另一些则拒绝显示。 注意这一点。
好文章。 大约六个月前我试图找到关于此的信息,而且很难找到任何好的教程。
补充一点:Mac 用户 可以使用终端中的 htpasswd 轻松生成加密密码,该命令包含在每台 Mac 中
htpasswd -nb 用户名 密码
总体来说是一个很棒的技巧。
还要感谢 kremalicious 提供的终端技巧。 我会用上的。
就像其他人问的那样,这有多安全? 我可以用它来访问已退出测试版并正在使用的网站的管理区域吗?
将 htpaswd 文件放在您的根文件夹之外,使其无法通过网络访问,例如
http://www.yourdomain.com/.htpasswd
MD5 哈希可以使用彩虹表破解。
Apache 的密码生成器是否会生成带盐的哈希? 我认为不会。
正如其他人已经评论的那样,密码文件确实应该存储在网络可访问树之外。 并且 .htaccess 文件应该被配置为(在最新的 Apache 中默认情况下)不可浏览。
非常棒的小贴士,一如既往!恭喜你拥有这个网站,它现在是我的最爱!我完全不是专家,所以关于上面 John 的评论,我该如何将文件存储在 web 访问树之外?如何配置 .htaccess 使其不可浏览?提前感谢!
如何在 Windows 中保存 .htaccess 文件?我收到一个错误提示,说“需要文件名”。
不错的 .htaccess 教程。你应该写一篇关于创建 PHP 登录区域来保护目录的文章。更棒的是,每个“用户”的登录只能访问特定目录。
非常有用,感谢 kremalicious 提供了 Mac 终端代码。
这是一个很棒的小贴士!
对于任何在 GoDaddy 上托管的用户,最简单的方法是通过帐户管理器进行操作。我尝试通过阅读本教程手动操作了很久,但无法使其正常工作。我终于找到了这篇文章,它解释了另一种方法(可能也是 GoDaddy 上唯一的方法)——http://help.godaddy.com/article/4057#protect
你有没有见过浏览器在通过之前需要多次身份验证的情况?我之前通过主机管理面板设置了一个密码保护的目录。我可以访问 .htaccess 文件,但据我所知,不能访问 .htpasswd 文件。.htaccess 中的所有内容似乎都与你上面概述的内容相同,只是最后一行不同:它写着
require user myusernamehere
而不是:require valid-user
我认为加密的密码是 .htpasswd 文件中唯一的项目。无论如何,你认为这可能是浏览器问题,还是主机设置方式中的问题?我尝试在其他计算机上复制此问题,但它似乎并不一致。我想我可以抛弃“管理面板方式”,并像这篇文章建议的那样创建我自己的文件……。 :)
我想补充几点
文章中示例 .htpasswd 中使用的哈希算法根本不像 MD5,更像是 crypt(),它是默认的(除了 Windows)。
MD5 不是加密,而是一种单向哈希/摘要算法。尽管名称如此,crypt() 也不算是加密。
将 .htpasswd 放在与 .htaccess 相同的目录中,会增加公开暴露用户和密码哈希的可能性。最好将它完全放在 Apache 的 DocumentRoot 之外。最近安装的 Apache httpd 可能默认包含阻止直接访问 .htaccess 和 .htpasswd 文件的规则,但并非总是如此。
我同意 Ronny 的观点,密码根本没有使用 MD5 进行哈希运算。
此外,对于 Windows 用户,如果你将文件名用引号(“.htaccess”)括起来,然后选择“所有文件”而不是 .txt 文件,记事本会保存它。我不知道 ANSI 或 UTF-8 编码是否有影响。无论如何,我不会将记事本用于 .htaccess 文件。
在我提出问题之前,我想感谢你花时间创建这个网站,并在 CSS 领域提供你的建议和专业知识。你让我的 CSS 知识“大幅度增长”。
现在……我的问题……有没有办法使用 CSS 使 htaccess/htpasswrd 呈现出我想要的任何样子?就像我对待普通的 HTML 页面一样?
感谢你的回复。我正在寻找一种方法来为我正在开发的网站制作登录页面。我喜欢“ht”方法……但我希望确保我可以控制页面的外观和感觉。
再次感谢,
John
我喜欢拥有这种能力!
仅供记录,并回答上面未解答的问题——这是 Apache 专用的。它在 IIS 上无法运行。
还应该提到,在你可以访问 Apache 的配置(httpd.conf)的情况下,这不是保护目录的首选方法。如果你有权访问,应该从那里配置目录安全性。
如上所述,它在除 Apache 之外的任何东西上都无法运行。此外,如果你要尝试实施它的目录包含以下内容,它将无法运行:
AllowOverride none
人们什么时候才会停止使用 IIS?它真的很糟糕
“人们什么时候才会停止使用 IIS?它真的很糟糕”
这真是一个超级愚蠢的评论:) IIS 是一款稳定且安全的產品,因此其市场份额不断增长。IIS 7 在功能方面也取得了重大进步。
感谢您的提示!这非常有用!
如何处理你想要保护的文件夹(即使对公众来说也不仅仅是只读,因为它可能包含私有代码或密码),但网页需要访问它?例如,CSS 子文件夹、JavaScript 子文件夹,或包含数据库用户名和密码的配置文件文件夹等。
我应该使用文件夹属性还是 .htaccess 文件?
感谢您提供这个很棒的网站。
我可以使用它来保护我电脑上的 hosts 文件的访问权限吗?
此外,每当我尝试创建文件时,它都会告诉我我无法使用 .htaccess 或 .htpasswd 作为文件,我该如何解决?
我无法使您的实时示例正常运行。
有没有办法,当我上传所有文件时,目录会要求输入用户名和密码,但它不接受密码?它只是反复弹出登录屏幕。我在终端(Mac)中使用了 htpasswd 命令来生成密码。有什么想法吗?
感谢您提供这个很棒的小贴士。但是,是否有可能让用户每次都提供用户名和密码,因为在 Chrome 中,在输入一次用户名和密码后,它每次打开时都不会要求输入凭据?如果有什么办法,请帮助我。
效果很好,但我现在遇到了我的 apple-touch-icon.png 无法保存在 iPad 或 iPhone 的主屏幕上的问题,你知道如何解决吗?
我需要为我用 HTML 代码构建的网页提供密码保护,但如何使用代码进行保护?需要在何处应用该代码?你能解释一下吗?
我遇到了 Keshav Gyawali 遇到的相同问题。我在我的网站上安装了这些文件,然后去我朋友家给他演示如何登录。他使用的是 MS Internet Explorer(而不是 Chrome,就像 K.G. 一样),并且在第一次登录后,只需输入地址就可以返回到网站,而无需重新输入密码。
嗨,我完全按照此方法操作,但现在它告诉我我没有授权查看页面,而且我从没有被提示输入用户名或密码?这是为什么呢?
我想知道,在用户输入密码之前,是否可以防止他们使用 Ctrl + U 查看源代码?