Apache配置 之 .htaccess 文件(二)

15、更改服务器签名

    在这节开始前,我们先拒绝所有的访问(请参考第7节,地址过滤)

deny from all

    这时候,我们浏览主页http://caige.cn/会发现有一个错误403 Forbidden.如下图所示:

    Apache配置 之 .htaccess 文件(二)_第1张图片

    然后,我们再在.htaccess文件中加入以下配置

ServerSignature On

    再次打开主页,会发现下面增加了一行提示信息,这段信息就是服务器签名。他列出了服务器的基本信息。

    ServerSignature默认的参数为Off表示关闭。

Apache配置 之 .htaccess 文件(二)_第2张图片

    但是有时候,用户看到了错误信息,想反应给管理员,可是找不到管理员怎么破?于是Apache提供了寻找管理员的方法,修改上面代码为:

ServerSignature EMail
SetEnv SERVER_ADMIN [email protected]

        ServerSignature的参数设置为EMail,下面是设置管理员的邮箱。

Apache配置 之 .htaccess 文件(二)_第3张图片

从上图的结果中,可以发现ip地址变成了一个超链接,这个超链接使用邮件协议mailto链接到管理员邮件。笔者这里Email设置失败,这是因为笔者是Apache是2.2版本,官方文档指出不能使用Setenv来设置环境变量。

和服务器签名相关的另外一个命令ServerTokens 。ServerTokens可以配置Http Response中的信息,由于不能在.htaccess文件中设置,这里不做介绍,具体点击这里查看ServerTokens。

    

16、利用FilesMatch设置访问规则(禁止访问配置文件)

在一些项目中,会利用一些文本文件来作为项目的配置文件,例如php.ini等。这时非常危险的。如果里面包含了重要的信息,例如数据库信息等,会危及到站点安全。

我们可以通过在.htaccess中配置FilesMatch节点的方法来禁止访问php.ini文件。

<FilesMatch "^php5?\.(ini|cgi)$">
SetEnvIfNoCase Remote_Addr 208.113.183.103 REDIRECT_STATUS
Order Deny,Allow 
Deny from All 
Allow from env=REDIRECT_STATUS 
</FilesMatch>
#come from http://www.askapache.com/htaccess/setenvif.html

解释:

<FilesMatch "^php5?\.(ini|cgi)$"> 匹配文件 php5.ini 或者 php.cgi

SetEnvIfNoCase Remote_Addr 208.113.183.103 REDIRECT_STATUS 当是内部访问IP(白名单的时候)设置变量 REDIRECT_STATUS为真。

Allow from env=REDIRECT_STATUS     判断环境变量REDIRECT_STATUS为真的时候允许访问此文件,内部程序调用。


17、强制脚本文件显示为文本文件(显示源码)

使用此配置可以强制脚本文件显示为文本文件,例如在站点目录下有一个以下内容的phpinfo.php文件:

<? phpinfo() ?>

很简单的php探针输出当前服务器内容。

Apache配置 之 .htaccess 文件(二)_第4张图片

如果我们在.htaccess文件中加入以下配置:

RemoveHandler cgi-script .php 
AddType text/plain .php

再次打开phpinfo.php

会发现php没有执行,而是被解析成文本文件。

同理,我们可以把把其他cgi脚本也禁用,也可以添加对其他cgi脚本的支持,点击查看cgi脚本文档


18、在线生成工具


如果不想查看太多的文档,可以使用以下在线的.htaccess生成工具来帮助生成。只需要按照提示一步一步填写关键信息,点击生成即可。

http://developers.evrsoft.com/tools-htaccess-generator.shtml

http://www.htmlbasix.com/


19、什么时候应该使用.htaccess

本文讲述了.htaccess文件实现的一些服务器功能。但是这些功能都可以在Apache的配置文件中实现,而且使 用.htaccess文件还会家中服务器的负担。那什么时候应该使用.htaccess功能呢?

当一个服务器没有对你开放配置文件的修改权限的时候,应该使用.htaccess文件配置。有些时候服务器管理员 为了安全,不会对站点开放apache的配置文件修改权限。但是管理员允许我们通过.htaccess文件去定义某些 功能(404、重定向等)。

另外Apache官方文档指出使用.htaccess有两个主要的弊端:

  1. 性能问题, 当设置服务器允许使用.htaccess文件的时候,服务器会遍历站点下面的所有目录去寻找.htaccess文件。另外,用户每发起一个请求的时候,服务器就会加载一次.htaccess文件。

  2. 安全问题,管理员对.htaccess中允许开放的功能得慎重的考虑。如果管理员允许的功能过于冗余,那么.htaccess文件开放的功能很可能就危及到服务器的安全(可以通过AllowOverride)来定义开放那些功能给.htaccess。


本文所有代码都经过测试,测试环境为

Apache/2.2.26 (Unix) DAV/2 PHP/5.4.24 mod_ssl/2.2.26 OpenSSL/0.9.8y 



本文主要参考自:

http://www.htaccess-guide.com/

http://httpd.apache.org/docs/

原创内容,转载请注明出处:http://my.oschina.net/Caige


你可能感兴趣的:(Apache配置 之 .htaccess 文件(二))