站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
认证、授权、访问控制
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
== 简介 == 如果[[网站]]上有些敏感信息或只希望为一个小群体所访问,本文阐述的方法能确保用户只能访问被允许的资源。 本文涵盖了保护站点资源的"标准"方法,大多数管理员将要用到这些方法。<br> == 先决条件 == 本文中讨论的指令应该被放进主配置文件(通常在<Directory>段中)或者针对单个目录的配置文件(.htaccess文件)中。<br> 如果你打算使用.htaccess文件,则必须设置服务器以允许在这些文件中使用认证指令,即用AllowOverride指令指定哪些指令在针对单个目录的配置文件中有效。<br> 既然本文讨论认证,就应该对AllowOverride这样设置:<br> AllowOverride AuthConfig <br> 如果你希望把这些指令直接写入主配置文件,当然就需要具有对主配置文件的写权限。<br> 而且,你需要对服务器的目录结构有所了解,以确定某些文件的位置。这个并不难,需要时我们会做适当的说明。 <br> == 启用认证 == 先介绍用密码来保护服务器上的目录。<br> 首先需要建立一个密码文件。这个文件应该放在不能被网络访问的位置,以避免被下载。例如,如果/usr/local/apache/htdocs以外的空间不能被网络访问,那么可以考虑把密码文件放在/usr/local/apache/passwd目录中。<br> Apache在其安装目录的bin子目录中提供了htpasswd工具,用于建立密码文件,可以这样使用:<br> htpasswd -c /usr/local/apache/passwd/passwords rbowen <br> htpasswd会要你输入密码,并要求重新输入以进行确认:<br> # htpasswd -c /usr/local/apache/passwd/passwords rbowen <br> New password: mypassword <br> Re-type new password: mypassword <br> Adding password for user rbowen <br> 如果htpasswd不在搜索路径中,则必须使用完整路径,如:/usr/local/apache/bin/htpasswd <br> 然后修改httpd.conf或.htaccess文件,指示服务器允许哪些用户访问并向用户索取密码。若要保护/usr/local/apache/htdocs/secret目录,则可以将下列指令写 <br>入/usr/local/apache/htdocs/secret/.htaccess或者httpd.conf的<Directory /usr/local/apache/apache/htdocs/secret>段。 <br> AuthType Basic <br> AuthName "Restricted Files" <br> AuthUserFile /usr/local/apache/passwd/passwords <br> Require user rbowen <br> 让我们逐个解释这些指令。AuthType指令选择对用户实施认证的方法,最常用的是由mod_auth_basic提供的Basic 。必须认识到的很重要的一点是,Basic认证方法并不加密来自用户浏览器的密码,因此,不应该用于高度敏感的数据。Apache中还有另一种更安全的认证方法"AuthType Digest",即由mod_auth_digest供的摘要认证。目前,只有最新的浏览器版本才支持摘要认证。<br> AuthName指令设置了使用认证的域(Realm),它起两个作用,首先,此域会出现在显示给用户的密码提问对话框中,其次,也帮助客户端程序确定应该发送哪个密码。<br> 所以,如果一个用户已经在"Restricted Files"域通过了认证,则客户端就可以尝试使用同样的密码来访问同一个服务器上任何名为"Restricted Files"域的其他部分,从而使多个受限区域使用同一个密码,以避免用户重复输入。当然,出于安全考虑,如果服务器变了,客户端始终会要求重新输入密码。<br> AuthUserFile指令设置了密码文件的位置,也就是刚才我们用htpasswd建立的文件。如果用户很多则认证速度会很慢,因为对每个请求都必须搜索这个纯文本文件,对此,Apache还支持把用户信息存入快速的数据库文件,mod_authn_dbm模块提供了AuthDBMUserFile指令,并可以用dbmmanage程序建立和操作这些数据库。Apache模块数据库中还提供了许多其他第三方模块提供的认证选项。<br> 最后,Require指令设置了允许访问受保护区域的用户,下一节将对Require指令作详细说明。<br> == 允许多人访问 == 上述指令只允许一个人(一个叫rbowen的用户)访问这个目录,但是多数情况下,都需要允许多人访问,所以就要用到AuthGroupFile指令。<br> 如果想允许多人访问,那么就必须建立一个组文件以确定组中的用户。其格式很简单,可以用你喜欢的编辑器建立,例如:<br> GroupName: rbowen dpitts sungo rshersey <br> 它只是每组一行的一个用空格分隔的组成员列表。<br> 向已有的密码文件中增加一个用户,可以输入:<br> htpasswd /usr/local/apache/passwd/passwords dpitts <br> 程序的提示和上面的一样,但是它会追加到已有的文件中,而不是建一个新文件(参数 -c 可以强制建立新的密码文件)。<br> 现在,需要将.htaccess文件修改成这样: <br> AuthType Basic<br> AuthName "By Invitation Only"<br> AuthUserFile /usr/local/apache/passwd/passwords<br> AuthGroupFile /usr/local/apache/passwd/groups<br> Require group GroupName <br> 现在,GroupName组中的成员都在password文件中有一个相应的记录,从而允许他们输入正确的密码进行访问。<br> 除了建立组文件,还有另一种途径允许多人访问,就是使用如下指令:<br> Require valid-user <br> 使用上述指令,而不是 Require user rbowen ,可以允许密码文件中的所有用户使用正确的密码进行访问。通过为每个组建立一个密码文件,这里甚至允许列举各个组,其优点是Apache只需要检查一个文件(而不是两个),其缺点是,必须维护众多密码文件,而且要确保AuthUserFile指定了一个正确的密码文件。<br> == 可能存在的问题 == 由于采用了Basic认证的方法,每次向服务器请求甚至刷新一个受保护的页面或图片时都必须校验用户名和密码,为此,必须打开密码文件并逐行搜索用户名,因此,服务器响应速度会受一些影响,受影响的程度与密码文件的大小成正比。<br> 所以,对密码文件中的用户总数存在一个实际上的上限,此上限取决于特定的服务器机器的性能,但是一般有几百个用户就会对响应速度有非常明显的影响,在这种情况下,可以考虑用其他认证方法。<br> == 其他认证方法 == 基于用户名和密码的认证只是方法之一,时常会有不需要知道来访者是谁,只需要知道来自哪里的情况。<br> Allow和Deny指令可以允许或拒绝来自特定主机名或主机地址的访问,同时,Order指令告诉Apache处理这两个指令的顺序,以改变过滤器。<br> 这些指令的用法:<br> Allow from address <br> address可以是一个IP地址(或者IP地址的一部分),也可以是一个完整的域名(或者域名的一部分),还可以同时指定多个IP地址和域名。<br> 比如,要拒绝不受欢迎的兜售垃圾的站点:<br> Deny from 205.252.46.165 <br> 这样,这个指令所管辖的区域将拒绝所有来自该地址的访问。除了指定IP地址,也可以指定域名,如:<br> Deny from host.example.com <br> 另外,还可以指定地址或域名的一部分来阻止一个群体:<br> Deny from 192.101.205<br> Deny from cyberthugs.com moreidiots.com<br> Deny from ke <br> Order可以组合Deny和Allow指令,以保证在允许一个群体访问的同时,对其中的一些又加以限制:<br> Order deny,allow <br> Deny from all <br> Allow from dev.example.com <br> 只列出Allow指令不会得到你想要的结果,因为它在允许指定对象访问的同时并不禁止其他未列出的对象的访问。所以上例使用的方法是:首先拒绝任何人,然后允许来自特定主机的访问。<br> [[category:Apache]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)