10/04/2009

Apache系统中.htaccess文件的应用

Apache系统中的.htaccess文件(或者”分布式配置文件”提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。子目录中的指令 会覆盖更高级目录或者主服务器配置文件中的指令。.htaccess必须以ASCII模式上传,最好将其权限设置为644。
创建 .htaccess 文件时可能给你带来一些问题。写入内容到这个文件是非常容易的,你只需输入合适的代码到文本编辑器中(如记事本)。但是你可能在保存文件的时候碰到问题。 因为 .htaccess 是一个非常奇怪的文件名(这个文件没有名字而只有一个8字符的扩展名)。这个可能在特定的系统中不能被接受(如 Windows 95)。在绝大多数的操作系统中,你可以尝试在保存文件的时候输入以下文件名:”.htaccess”(包括引号)。如果这不起作用,你可能需要先把它命 名为别的名字(如 htaccess.txt),然后上传到服务器。上传之后,在 FTP 工具中重命名它。
尽管通过 .htaccess 可以做很多事情,但是这篇日志主要关注的是如何提高 WordPress 的安全性和可用性。
  1. 保护 .htaccess 自身的安全性。阻止用户通过读取和写入 .htaceess 来更改安全性的设置。

    order allow,deny
    deny from all
  2. 隐藏服务器的数字签名。隐藏服务器的数字签名之后,入侵者将很难找到有机会找到安全漏洞,因为他们不知道背后的服务器是什么。
    ServerSignature Off
  3. 限制上传文件的大小。这个能够帮助阻止 DoS 攻击(用户通过上传巨大的文件来冲垮服务器)并且能够节约带宽。
    LimitRequestBody 10240000
    # limit file uploads to 10mb
  4. 停止 mod_security 过滤器。这是一个可选的设置并且要小心处理。这些指令告诉服务器不要使用 mod_security 过滤器,因为 mod_security 过滤器不允许用户发表含有这些单词 “curl”,“lynx” 或者 “wget” 等等单词的文章。这个看起来有点琐碎,但是这个让一些站点头痛,因为这些单词几乎那些站点每天都会用到。
    SecFilterInheritance Off
  5. 保护 wp-config.php 文件。我们可以通过 .htaccess 文件阻止用户读取和写入 WordPress 的主配置文件。这个指令假设 WordPress 是安装在站带你的根目录。

    order allow,deny
    deny from all
  6. 指定自定义错误文档。这条指令做的更多是站点的可用性而不是安全性。它们指定了哪个页面将被显示,一旦服务器错误,如页面找不到(代码 404) 禁止访问(代码 403)等等。
    ErrorDocument 404 /notfound.php
    ErrorDocument 403 /forbidden.php
    ErrorDocument 500 /error.php
  7. 禁止浏览目录。这将阻止服务器在没有找到 index 文件(如 index.html,index.php 等等)的情况下显示文件夹目录内容。这能阻止用户看到文件夹的内容使得更难对网站发动攻击。
    # disable directory browsing
    Options All -Indexes
  8. 防止图片盗链。这个能够阻止其他网站盗链本网站的图片,迫使他们 要么指向整个页面,或者其他存储图像的地方。这个保存了宝贵的带宽并且能够增加流量(虽然只是一点点)。下面的代码将会显示 stealingisbad.gif 这张图片,当有人试着热链到到你的网站来显示图片
    #disable hotlinking of images
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC]
    #RewriteRule \.(gif|jpg|png)$ http://www.yourdomain.com/stealingisbad.gif [R,L]
  9. 在你的站点给每个 URL 设置符合规定的或者“标准”的链接。这能够帮助提高网站的可用性和提高网站在搜索引擎中的排名。总之,它会把来自 http://yourdomain.com 的请求重定向到 http://www.yourdomain.com/.
    # set the canonical url
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^yourdomain\.com$ [NC]
    RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]
  10. 保护博客免受垃圾留言的侵扰(和普通方式提交的垃圾留言)。最后的那条指令将会阻止用户直接从其他网站的留言提交框发表留言,虽然这不是一个包罗 万象的反垃圾留言的方法,但是它确实能够帮助你。
    # protect from spam comments
    RewriteEngine On
    RewriteCond %{REQUEST_METHOD} POST
    RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
    RewriteCond %{HTTP_REFERER} !.*yourdomain.com.* [OR]
    RewriteCond %{HTTP_USER_AGENT} ^$
    RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
加入这些指令之后,你应该添加 WordPress 用于管理永久链接的代码。还有很多的指令和很多的方法可以提高网站的可用性和安全性,不过这里所列出的应该占了日常所需的大部分了。当你上传该文件到服务 器上之后,你应该一遍有一遍的测试直到你觉得所有的东西都工作正常,再测试一遍。检查下是否受保护的文件还能不能被访问,你依旧允许访问的文件和文件夹能 否还能访问。常规的经验可能是棘手的事情,它们可能导致看似随机的问题,所以在你发布你的网站之前务必完全的测试你的网站。
原文地址:http://fairyfish.net/2007/08/01/using-htaccess-to-secure-and- improve-wordpress/
关于正则表达式的学习http://www.javey.org/class/WebDev/Regex/30Minutes,Regex.html
本文来自: http://www.javey.org/archives/40

0 评论:

免责声明

1、本人是文盲,以上内容文字均不认识,也看不懂是什么意思(包括但不限于对所以上之内容的识别、阅读、理解、分析、记忆等);

2、本人过去、现在以及将来都不认识本文中提及当事人,且自古以来与该相对人无利益关系;

3、本人昨天、今天以及明天都没有或者不准备去本文所述地点。本文表述之事与本人无关。

4、本人在此发文(包括但不限于汉字、拼音、拉丁字母、斯拉夫字母、日语假名、阿拉伯字母、单词、句子、图片、影像、录音、以及前述之各种任意组合等等)均为随意敲击键盘所出,用于检验本人电脑键盘录入、屏幕显示的机械、光电性能,并不代表本人局部或全部同意、支持或者反对文中观点。如需要详查请直接与键盘发明者及生产厂商法人代表联系;

5、人生有风险,上网需谨慎。本文不暗示、鼓励、支持或映射读者作出生活方式、工作态度、婚姻交友、股票债券买卖、子女教育的积极或消极判断。未成年人请在监护人陪同下阅读本文。无完全民事行为能力者,请立即关闭网页,并用20%高锰酸钾+75%乙醇对键盘、硬盘、电压插座、显示器、鼠标、cpu进行灌溉消毒;

6、如本人留言违反国家有关法律,请网络管理员及时删除本文,本人保留继续发文的权利;

7、因删贴不及时所产生的任何法律(包括宪法、加法、减法、乘法、除法、剑法、拳法、脚法、指法、民法、刑法、书法、公检法、基本法、劳动法、婚姻法、输入法、没办法、国际法、今日说法、吸星大法及文中涉及或可能涉及以及未涉及之法,各地治安管理条例)纠纷或责任本人概不负责;

8、本人谢绝任何跨省(包括但不限于跨国、跨洲、跨星球、跨星系)追捕行为。确因不抓不足以平民愤,或不抓就领不到薪水养家户口的公职人员,建议携带工作证、身份证、结婚证/离婚证、独生子女证、健康证、暂住证、毕业证、边防证、县以上政府机关出具的介绍信温情操作。抓捕按照以下排序倒序:作者、原作者以及网络管理员以及网络运行商、电信运营商、电力供应商、电脑生产销售商.