.htaccess重写、安全防护、文件访问权限

今天在《外刊IT评论》上看见了关于.htaccess的使用总结,觉得很不错的,因为wp博客还有其他的php的web服务站点好多都是用.htaccess来管理比如效率以及安全的问题,有必要来学习一下。

1.时区设置

有些时候,当你在PHP里使用date或mktime函数时,由于时区的不同,它会显示出一些很奇怪的信息。下面是解决这个问题的方法之一。就是设置你的服务器的时区。你可以在这里找到所有支持的时区的清单。

  1. SetEnv?TZ?Australia/Melbourne

2. 搜索引擎友好的301永久转向方法

为什么这是搜索引擎友好的呢?因为现在很多现代的搜索引擎都有能根据检查301永久转向来更新它现有的记录的功能。

  1. Redirect?301?http://www.aqee.net/home?http://www.aqee.net/

3. 屏蔽下载对话框

通常,当你下载东西的时候,你会看到一个对话框询问你是保持这个文件还是直接打开它。如果你不想看到这个东西,你可以把下面的一段代码放到你的.htaccess文件里。

  1. AddType?application/octet-stream?.pdf
  2. AddType?application/octet-stream?.zip
  3. AddType?application/octet-stream?.mov

4. 省去www前缀

SEO的一个原则是,确保你的网站只有一个URL。因此,你需要把所有的通过www的访问转向的非www,或者反这来。

  1. RewriteEngine?On
  2. RewriteBase?/
  3. RewriteCond?%{HTTP_HOST}?^www.aqee.net?[NC]
  4. RewriteRule?^(.*)$?http://aqee.net/$1?[L,R=301]

5. 个性化Error页面

对每个错误代码定制自己个性化的错误页面。

  1. ErrorDocument?401?/error/401.php
  2. ErrorDocument?403?/error/403.php
  3. ErrorDocument?404?/error/404.php
  4. ErrorDocument?500?/error/500.php

6. 压缩文件

通过压缩你的文件体积来优化网站的访问速度。

  1. #?压缩?text,?html,?javascript,?css,?xml:
  2. AddOutputFilterByType?DEFLATE?text/plain
  3. AddOutputFilterByType?DEFLATE?text/html
  4. AddOutputFilterByType?DEFLATE?text/xml
  5. AddOutputFilterByType?DEFLATE?text/css
  6. AddOutputFilterByType?DEFLATE?application/xml
  7. AddOutputFilterByType?DEFLATE?application/xhtml+xml
  8. AddOutputFilterByType?DEFLATE?application/rss+xml
  9. AddOutputFilterByType?DEFLATE?application/javascript
  10. AddOutputFilterByType?DEFLATE?application/x-javascript

7. 缓存文件

缓存文件是另外一个提高你的网站访问速度的好方法。

  1. <FilesMatch?“.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”>
  2. Header?set?Cache-Control?“max-age=2592000″
  3. </FilesMatch>

8. 对某些文件类型禁止使用缓存

而另一方面,你也可以定制对某些文件类型禁止使用缓存。

  1. #?显式的规定对脚本和其它动态文件禁止使用缓存
  2. <FilesMatch?“.(pl|php|cgi|spl|scgi|fcgi)$”>
  3. Header?unset?Cache-Control
  4. </FilesMatch>

安全问题

下面的htaccess代码能够提高你的web服务器的安全水平。图片链接盗用保护非常有用,它能防止其他人偷盗使用你的服务器上的图片资源。

1. 通过.htaccess放盗链

痛恨那些偷盗链接你的web服务器上的图片资源而耗尽了你的带宽的行为吗?试试这个,你可以防止这种事情的发生。

  1. RewriteBase?/
  2. RewriteCond?%{HTTP_REFERER}?!^$
  3. RewriteCond?%{HTTP_REFERER}?!^http://(www.)?aqee.net/.*$?[NC]
  4. RewriteRule?.(gif|jpg|swf|flv|png)$?/feed/?[R=302,L]

2. 防黑客

如果你想提高网站的安全等级,你可以去掉下面的几行代码,这样可以防止一些常见恶意URL匹配的黑客攻击技术。

  1. RewriteEngine?On
  2. #?proc/self/environ??没门!
  3. RewriteCond?%{QUERY_STRING}?proc/self/environ?[OR]
  4. #?阻止脚本企图通过URL修改mosConfig值
  5. RewriteCond?%{QUERY_STRING}?mosConfig_[a-zA-Z_]{1,21}(=|\%3D)?[OR]
  6. #?阻止脚本通过URL传递的base64_encode垃圾信息
  7. RewriteCond?%{QUERY_STRING}?base64_encode.*(.*)?[OR]
  8. #?阻止在URL含有<script>标记的脚本
  9. RewriteCond?%{QUERY_STRING}?(<|%3C).*script.*(>|%3E)?[NC,OR]
  10. #?阻止企图通过URL设置PHP的GLOBALS变量的脚本
  11. RewriteCond?%{QUERY_STRING}?GLOBALS(=|[|\%[0-9A-Z]{0,2})?[OR]
  12. #?阻止企图通过URL设置PHP的_REQUEST变量的脚本
  13. RewriteCond?%{QUERY_STRING}?_REQUEST(=|[|\%[0-9A-Z]{0,2})
  14. #?把所有被阻止的请求转向到403禁止提示页面!
  15. RewriteRule?^(.*)$?index.php?[F,L]

3. 阻止访问你的 .htaccess 文件

下面的代码可以阻止别人访问你的.htaccess文件。同样,你也可以设定阻止多种文件类型。

  1. #?保护你的?htaccess?文件
  2. <Files?.htaccess>
  3. order?allow,deny
  4. deny?from?all
  5. </Files>
  6. #?阻止查看指定的文件
  7. <Files?secretfile.jpg>
  8. order?allow,deny
  9. deny?from?all
  10. </Files>
  11. #?多种文件类型
  12. <FilesMatch?“.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$”>
  13. Order?Allow,Deny
  14. Deny?from?all
  15. </FilesMatch>

4. 重命名 htaccess 文件

你可以通过重命名htaccess文件来对其进行保护。

  1. AccessFileName?htacc.ess

5. 禁止目录浏览

禁止服务器对外显示目录结构,反之亦然。

  1. #?禁止目录浏览
  2. Options?All?-Indexes
  3. #?开放目录浏览
  4. Options?All?+Indexes

6. 改变缺省的Index页面

你可以把缺省的 index.html, index.php 或 index.htm 改成其它页面。

  1. DirectoryIndex?business.html

7. 通过引用信息来阻止某些不欢迎的浏览者

  1. #?阻止来自某网站的用户
  2. <IfModule?mod_rewrite.c>
  3. RewriteEngine?on
  4. RewriteCond?%{HTTP_REFERER}?scumbag.com?[NC,OR]
  5. RewriteCond?%{HTTP_REFERER}?wormhole.com?[NC,OR]
  6. RewriteRule?.*?-?[F]
  7. </ifModule>

8. 通过判断浏览器头信息来阻止某些请求

这个方法可以通过阻止某些机器人或蜘蛛爬虫抓取你的网站来节省你的带宽流量。

  1. #?阻止来自某些特定网站的用户
  2. <IfModule?mod_rewrite.c>
  3. SetEnvIfNoCase?^User-Agent$?.*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider
    |leacher|collector|grabber|webpictures)?HTTP_SAFE_BADBOT
  4. SetEnvIfNoCase?^User-Agent$?.*(libwww-perl|aesop_com_spiderman)?HTTP_SAFE_BADBOT
  5. Deny?from?env=HTTP_SAFE_BADBOT
  6. </ifModule>

9. 禁止脚本执行,加强你的目录安全

    1. #?禁止某些目录里的脚本执行权限
    2. AddHandler?cgi-script?.php?.pl?.py?.jsp?.asp?.htm?.shtml?.sh?.cgi
    3. Options?-ExecCGI
时间: 2024-12-31 03:54:26

.htaccess重写、安全防护、文件访问权限的相关文章

UNIX环境编程学习笔记(9)——文件I/O之文件访问权限的屏蔽和更改

lienhua342014-09-10 1 文件访问权限 在文件访问权限和进程访问控制中,我们已经讲述过文件访问权限位,为了方便,我们重新列在下面, 表 1: 文件的 9 个访问权限位  st_mode 屏蔽  意义  S_IRUSR  用户 -读  S_IWUSR  用户 -写  S_IXUSR  用户 -执行  S_IRGRP   组 -读  S_IWGRP  组 -写  S_IXGRP  组 -执行  S_IROTH  其他 -读  S_IWOTH  其他 -写  S_IXOTH  其他

UNIX环境编程学习笔记(7)——文件I/O之文件访问权限与进程访问控制

lienhua342014-09-02 1 文件的设置用户 ID位 和设置组 ID位 与进程相关联的 ID 如下表所示, 表 1: 与进程相关联的用户 ID 和组 ID 实际用户 ID 我们实际上是谁 实际组 ID 有效用户 ID 用于文件访问权限检查 有效组 ID 附加组 ID 保存的设置用户 ID 由 exec 函数保存 保存的设置组 ID 保存的设置用户 ID 和保存的设置组 ID 在执行一个程序时包含了有效用户 ID 和有效组 ID 的副本,这个后面我们学习到进程时在详细学习. 此处,我

Android基础--文件访问权限

1.Android 底层是Linux内核,因此文件访问权限与Linux中文件访问权限类似 d   rwx   rwx   rwx 文件类型 owner group other 文件类型   d 代表文件夹,-代表文件,l 代表链接 owner文件创建的用户 group 与文件创建者在同一组的其他用户 other 与文件创建者不在同一组的其他用户 Android中每一个应用都对应独立的用户,不同应用所在组是不同的,可以通过设置是两个应用在同一个组中   2.以下是在当前应用的私有空间内创建文件时指

Linux之文件访问权限管理

概述:在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录. 有以下三种访问方式限制访问权限: 只允许用户自己访问: 允许一个预先指定的用户组中的用户访问: 允许系统中的任何用户访问. 同时,用户能够控制一个给定的文件或目录的访问程度.一个文件活目录可能有读(r).写(w)及执行权限(x).当创建一个文件时,系统会自动地赋予文件所有者读和写的权限,这样可以允许所有者能够显示文件内容和修改文件. 三种不同的用户类型访问一个目录或者文件:所有者(own

android进阶之文件访问权限

android是基于linux的,所以文件访问权限和linux一样.其中r代表可读,W代表可写,X代表可执行. 文件访问权限分三组. 1-3 当前用户(应用)访问权限. 4-6 当前用户所在组的访问权限. 7-9 其他用户(应用)访问权限. android应用是一个独立的用户,对应一个独立的组. 可以通过如下指令来查看用户组和用户ID: 强制修改文件访问权限: - --- --- --- (第一个-代表目录,后面是三组的权限- 代表0) - rw- --- --- (代表当前用户可读可写)(对应

linux 文件访问权限及chmod命令的使用

在终端下输入命令 ll 查看文件信息,我们可以得到以下信息 第一排形如  -rwxrwxrwx  的一串字母代表不同用户对文件的不同可操作权限 第一个 - 带表的是类型,剩下的9个字母,三个一组分别代表三种人对文件的权限 前三个 代表所有者(user) 中三个 代表组群(group) 后三个 代表其他人(other) r:  可读 read  数值代表:4 w: 可写 write  数值代表:2 x: 可执行 execute  数值代表:1 chmod命令: chmod [options] mo

文件访问权限:更改用户ID

本文来探讨一下通过更改用户ID来获取合适的文件访问权限.由于更改组ID的规则与用户ID相同,我们在这里只探讨用户ID. 纸上得来终觉浅 先了解以下几个基本知识: 用户ID包括:实际用户ID.有效用户ID.保存的设置用户ID.其中保存的设置用户ID由exec函数保存. 实际用户ID标识我们究竟是谁,该字段在登录时取自口令文件中的登录项.通常,在一个登录会话期间该值不会改变,但root用户进程有方法改变它. 有效用户ID决定了我们的文件访问权限. 保存的设置用户ID在执行一个程序时包含了有效用户ID

Android文件访问权限

文件访问权限 Android的文件访问权限控制和linux一样. 文件访问权限:谁能访问这个文件.使用drwxrwxrwx这是个字符控制 第一个字母 d:表示文件夹 -:表示文件 后面每三个字母分为一组 第一组: rwx 是文件拥有者的权限 r:read,读 w:write,写 x:execute,执行 -:表示没有该权限 第二组:rwx表示的是和文件拥有者同属于一组的用户对文件拥有的权限 r:read,读 w:write,写 x:execute,执行 -:表示没有该权限 第三组:rwx表示其他

[Z] Linux下进程的文件访问权限

原文链接:http://blog.csdn.net/chosen0ne/article/details/10581883 对进程校验文件访问权限包括两个部分,一是确定进程的角色(属于哪个用户或者组),二是确定对应的角色是否具有该操作的权限. 首先看第一部分.默认情况下,进程的有效角色就是当前执行这个进程的用户及其所在组.但是,文件具有设置用户ID位和设置组ID位(stat.st_mode的S_ISUID和S_ISGID),用于改变这种默认的行为,将进程的有效角色设置为文件所属的用户和组.这主要用

Linux的文件访问权限及修改权限命令chmod

Linux的文件访问权限及修改权限命令chmod Mxx000 Mxx000 11 人赞同了该文章 Linux的文件访问权限可以使用ls -l进行查看,如下图这样操作就可以了. 一.访问权限 访问权限分为读(read).写(write).执行(execute)三种, 并且涉及到文件所有者(user).文件所属组(group).其他人(other)三个主体. 选取上图红框中的两行为例,结合下面的表格先讲一下基本结构: 第一位表示文件类型 第二-十位表示权限:每三位一组,共三组,分别表示三个主体对应