服务与支持 |咨询热线 0931-8733767
  • 金城在线
  • 公司简介
  • 发展历程
  • 企业文化
  • 售后服务
  • 工作机会
  • 联系我们

基于.htaccess的网站安全应用研究

来源:发布时间:2017-9-7 10:15:55

  在Internet上广泛部署WEB服务是现今信息传播的最主要途径,而基于此类应用的Linux加Apache的组合因其出色的表现,在众多WEB服务虚拟主机环境配置中占据着极大的市场份额。而基于网站集群管理的WEB服务提供商往往基于统筹策略给予客户有限的主机管理权限,此时网站的设计与管理人员则可以通过.htaccess文件自己修改服务器配置实现权限控制保护网站安全。使用.htaccess方式不需要编写程序就能方便实现,只需掌握特定的配置指令及rewrite规则即可。

  1 .htaccess文件与rewrite规则定义

  .htaccess文件是Apache服务器上的一个基于文本的分布式配置文件,它提供了针对目录改变配置的方法,常用在内容提供者需要针对特定目录改变服务器的配置而又没有root权限的情况下,通过自行修改该文件实现权限控制。

  Rewrite规则主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言,可基于服务器级和目录级两种方式,本文我们讨论的是后者。

  2 Apache下的PHP执行权限控制

  网站安全策略中,对目录的执行权限是非常敏感的,一般来说,对于可写入的目录是禁用脚本执行权限的,像DedeCMS系统,可写入的有两个目录data、uploads,data目录主要是基本配置文件和缓存数据,uploads则是附件上传保存的目录,禁止该目录的执行权限可有效防止恶意写入可执行脚本导致网站被攻击的可能性。我们也建议把其他一些生成纯静态html的目录也去除执行权限,这样系统会更为安全。

  该方法基于.htaccess文件中使用rewrite来达到禁止指定脚本的运行,规则内容如下:

  [1]RewriteEngine on RewriteCond%!^$

  [2]RewriteRule filePath/(.*).(php)$–[F]

  其中,方括号表示代码行序号,在规则书写时切记去掉,代码行[1]表示启用rewrite开关,可不必重复书写,以下类同。将上述代码存储至到.hatccess文件并保存到对应的filePath站点目录下,这样filePath目录下的php脚本(如上例)的执行权限就禁止了。

  3 防止站内资源盗用

  现在互联网上原创的内容被转载、盗链的现象很普遍,为有效防止盗链,挤占服务器带宽,以及一定程度保护站内资源版权,可通过.htaccess文件来设置资源文件防盗链。规则内容如下:

  [1]RewriteCond%{HTTP_REFERER}!^$

  [2]RewriteCond%{HTTP_REFERER}!^http://(www\.)?domain.com(/)?.*$[NC]

  [3]RewriteRule.*\.(gif|jpg|jpeg|bmp|png)$http://www.xxx.com/photo.jpg[R,NC,L]

  其中,代码行[2]表示允许访问行[3]所列资源类型的域名来源,为保障搜索引擎收录及本地站点调用,用户可自行扩展,例如可另起多行,将百度、谷歌、雅虎及本地域名等设置其中。代码行[3]表示将外链的图片资源文件替换为指定路径下的特定图片,这里需要注意的是替换图片建议为非本站的图片文件,否则会造成死循环。对于其他类型的资源保护,用户可根据实际情况变更代码行[3]的文件类型即可。

  4 自定义错误页

  当我们访问某网站时,不合理的访问,或者网站自身的问题,会出现各种的错误返回页面。从安全角度上讲,这就给攻击者提供了某种判断的依据,为了防止这种情况,我们同样可借助.htaccess来控制错误的处理方法。HTTP协议错误定位在400到505之间,正因为这些错误被标准化,WEB服务器处理错误的方法最终就取决于网络管理员,使得其可以拥有自己的、个性化的错误页面(例如找不到文件时),而不是服务商提供的默认页。配置错误页的重定向语法如下:

  [1]ErrorDocument[error code] [url]

  [error code]为错误代码,[url]可自定义为任意一个有效的网络地址。举例来说,如果我的根目录下有一个notfound.html文件,我想使用它作为404 error的页面:

  ErrorDocument 404 /notfound.html

  错误代码可参考相关书籍描述,接下来,你要做的只是创建一个错误发生时显示的指向页面文件,然后把它们和.htaccess一起上传。

  5 目录的密码访问保护

  要使用.htaccess进行网站目录密码保护主要分为2个步骤,即配置.htaccess文件和创建.htpasswd密码文件。定义如下:

  [1]AuthName “Section Name”

  [2]AuthType Basic

  [3]AuthUserFile /full/path/to/.htpasswd

  [4]Require valid-user

  Section Name出现在弹出的密码输入框中,我们可以自己定义,/full/path/to/.htpasswd是我们第二步密码文件.htpasswd的绝对路径,建议将该密码配置文件置于站点之外的目录,可防止他人通过浏览器的方式恶意获取。

  密码文件的内容格式为user:password,密码部分必须为加密的格式。当你试图访问被.htaccess密码保护的目录时,你的浏览器会弹出标准的账号、密码对话窗口。

  6 来访IP的筛选处理

  由于网站的特殊发布环境,管理员可能限制某些特定IP的用户访问指定的内容,或者想封禁某些指定IP地址段。.htaccess对指定IP进行限制访问在做网站优化以及网站基础部署中都是有用的,可以有效防止采集和信息保密,示例如下:

  [1]order allow,deny

  [2]deny from *.*.*.*

  [3]allow from *.*.*.*

  代码行[1]表示先限定许可的,后限定禁止的,反之亦可;行[2]、[3]可限制指定IP地址段的访问开关,可采用地址位方式进行匹配认证。通过维护IP代码行以达到实现保护网站安全受访的目的。

  7 结束语

  网站的安全性不容小视,网站目录权限的严格控制显得尤为重要,通过.htaccess来保护网站安全方便和可行,因为它不像使用脚本程序那样容易受到漏洞等软性攻击,而更是服务器系统级别的权限控制措施,很大程度上提高了网站的安全性。


相关文章
  • 预约专家

    为您提供一对一解决方案
    立即预约
  • 售前咨询

    周一至周五9:00——17:30
    立即咨询
  • 联系方式

    13919049954

    全国7×24小时热线服务
  • 免费报价

    专属专业顾问1对1报价
    免费报价