|
|
|
.htacess的帮助—可以解决大多数的问题 |
|
自己翻译的,到后面的时候已经很不耐烦了,况且认为apache归于linux吧, 1.什么是.htacess 你可以通过它,在你的web directory或子目录下创建一个.htaceess,来控制你的server对request的回应,一个.htacess包含了一个或多个目录,它告诉了server如何行动,作为例子,你可以用它来保护你的password. 下面是一些有用的细节: .htacess必须是一个明文;他包含了server的目录指示,一个一行;包含了对目录子目录的指示;在一个目录里的.htacess会覆盖在它的父目录里的.htacess,即以在父目录中的为准;如果有#,意味着为注释 2.用htacess进行密码保护 首先,.htacess是安全的吗?是的,如果你遵循一定的规则的话.如果某人得到了你的ftp-access的话,它就可以看到你的.htaccess,或是复本,被称为.htpasswd . 规则如下: 不要把你的.htpasswd放到与你的htaccess在同一个目录下,(确实有一些网管如此笨,以致与没有把htpasswd放到webroot的目录外),所以尽量把.htpasswd放到webroot的目录外,如果不能,那就只好把它放到一个”安全”的地方,把它起一个尽力变态的名字,象7qh9zki1aqlop2, 确保没有link可以到这个地方,并放置一个index.htm*在这个目录,这样会更安全. 如果你考虑使用php或者cgi的话,就要注意他们的安全了,因为他们可能会带进一些新的弱点. 当然并不是所有的web都允许这样作,但值得一试. 3.如何保护拥有.htaccess的目录 首先你的server必须支持.htacess,进入浏览器,输入.htacess的地址,看是否需要一个login 3.1以www.5linemasu.com为例: 你想保护的目录是/member,而且你的server支持你在webroot外存储文件,如/secure 通过你的login和ftp进入到自己的目录,你会看到你有两个目录,www和secure,进入secure,查看你的path-line是/home/virtserv/secure/5linemasu 然后用editor编写: AuthUserFile /secure/5linemasu/.htpasswd AuthName Masu磗 Chamber AuthType Basic require valid-user 保存为.htaceess,然后用ASCII-Mode ftp到你的目录,这样/home/virtserv/secure/5linemasu 就被设置成了644的权限,或者手动也可. 3.2 现在是.htpassword 文件了 你要作以下几项去安排你的帐号,打开一个dos窗口,在windows system中, 然后输入telnet,看到提示后,敲入open server’s ip,输入你帐号,密码 进入/secure,输入 *htpasswd –c .htpasswd wolf (第一个htpasswd无.,第二各有”.”,wolf是我们想加入的counts, -c 意味着你要先建立.htpasswd,) 然后输入两遍密码,以此类推,加入你想加入的所有帐户(考,他妈的作者杀比啊) 编辑完.htpasswd之后把它放到/secure里,权限为644 4. .htpasswd的弱点 你必须把.htacess放到你想保护的目录里,而.htacess又包含了.htpasswd的存放路径,它的危险在于任何进入你的存放.htaccess的目录,也即你想要保护的目录,的人都可以看到你.htacess,从而知道你的.htpasswd. 所以要设置.htacess的权限,设为644,r/w 权限,它的owner,r的权限group和others,于是问题就出在这了,.htaccess可以被public read,而如果你让public无法读的话,那么server也就无法读.htaccess了,这就会导致:每次你使用浏览器进入你要保护的area的话,只会得到403,forbidden的结果 所以使用这种方法—设置权限为public,不让别人读你的.htaccess是行不通的 5.那么如何解决这个矛盾呢? 在创建了.htacces之后加入如下的语句: order deny,allow deny from all 保存文件, ASCII-Mode 上传到webroot目录,设置权限为644,即可 6. 配置 .htaccess 任何COE 的使用者, 都会在public_html/目录里和根/里 和在server root 的任何子目录里建立 .htaccess 文件,主要的原因是: 密码保护着私人的目录,而.htaccess基本上是附加的,没什么用途的附加品,对我的server配置来说它让你可以改变server操作你的目录和文件的方式. 注意到一些事情是被锁定了的,以保证尽可能高的安全性.这个.htaccess放在它起作用的目录下,它控制了它所在的目录及其子目录的设置与权限,所以你也可以在子目录里放入其他的.htaccess,而它会工作的很好,即会覆盖掉父目录里的.htaccess的设置. 6.1 你可以加在.htaccess里的指示directive Allow Deny Order Require AddType AuthUserFile AuthGroupFile AuthType AuthName DefaultType ErrorDocument ForceType Options Satisfy 看起来很复杂其实呢,很简单,后面会又这方面的例子 6.2 举例 l 拒绝某个domain进入目录 在 .htaccess 加入: order allow,deny deny from 128.23.45. deny from 207.158.255.213 allow from all 这样任何来自以126.23.45打头的ip的来访者都无法访问这个目录,同理,来自207.158.255.213 也不行 需要注意的是deny必须优先与allow l 对domain屏蔽某一类的文件 .htaccess加入: Order Deny, Allow Deny from .thoseevilpeople.net 这样.只有.gif文件被屏蔽掉了,对于那些来自.thoseevilpeople.net的人.既然有很多人有不只一个帐号,那么更多的是以这样的形式出现”只允许一个domain,就象下个例子一样, l 只允许某个domain,某个国家看到一类文件 .htaccess contains: Order Allow, Deny //说明Allow优先于deny Deny from all Allow from .yahoo.com Allow from .it l 为目录加入某一MIME-TYPE的 文件 AddType image/x-photoshop PSD 这样就会使server声明 *.psd 在它的content-type中,于是如果浏览器知道photoshop的话,就会直接调用这个software,.你也可以这样写: AddType audio/x-dumbexample JPG 重定向机器名 进入.htaccess的入口 更全的文档参看apache/doc, A.项目: Allow (all [domain list]) Deny 同上 Order (Allow,Deny or Deny,Allow)规定了哪个rules优先 Requre (user [user list], group [group list] valid-user) 如”Require User mark dave bud sean”,用户必须用这几个名字登陆 AddType AuthUserFile (filename) 指定了password list的所在地 AuthGroupFile 分类用户,使之易于管理,不常用 AuthType (basis) DefaultType ErrorDocument (3-digit-code [filename or text or url]) 错误响应 B.操作options 这些是关闭的,但默认是打开的 Satisfy(All,all) 执行”Satisfy All”,如果你在一个目录里同时有Allow和require指示,可以使你密码保护一部分区域,使public无法看到,但可使特定的一部分人看到 用来为特定的一类文件提供指示, |
|
 |
| 浏览: |
来源:PhpMod.com |
编辑:江江 |
发布时间:2005-08-26 07:23 |
|