加固PHP环境

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 
PHP作为Apache的模块运行时,Apache本身的安全起主导作用,因此如果配置正确的话,PHP应该是一个十分安全的环境,但是如果PHP是以CGI方式来运行的话,就没有这么安全了。

  本文中提到的操作,对Unix和Windows都适用。

  一、作为Apache模块来运行

  因为一般说来,Apache会以“nobody”或者“www”来运行,所以,PHP作为模块是十分安全的。

  如果PHP在虚拟主机环境下,可能会产生用户能浏览其他用户文件的危险。一个简单的脚本如下:

  
  // 假定文档根位于 /usr/local/websites/mydomain

  $location = '../'; // 到上一级目录
  $parent = dir($location);

  // 显示当前目录: /usr/local/websites
  while($entry = $parent->read()) {
  echo $entry . '
';
  }
  $parent->close();
  ?>

  这样,只要修改$location,用户就可以浏览虚拟主机上所有其他用户的文件了。为了减少这样的危险,我们需要看一下php.ini ,修改其中的safe_mode, doc_root和usr_dir 参数,把用户限制在他自己的虚拟主机环境下:

  safe_mode = On
  doc_root = /usr/local/apache/htdocs
  user_dir = /home/albertxu/htdocs

  二、作为CGI

  把PHP以CGI方式运行需要十分小心,可能会泄露你不想让人知道的信息。

  第一件事情要注意的就是一定要把执行文件放到文档根目录以外的地方。例如/usr/local/bin,因此所有的CGI文件开头必须带有:

  #!/usr/local/bin/php

  防止用户直接调用CGI的办法是在Apache中强迫CGI重定向:

  Action php-script /cgi-bin/php.cgi
  AddHandler php-script .php

  这会把下面的URL

  http://example.com/mywebdir/test.htm

  转换为:

  http://example.com/cgi-bin/php/mywebdir/test.htm

  在以CGI方式编译PHP时,最好采用下面的选项:

  --enable-force-cgi-redirect

  

时间: 2024-12-21 16:45:26

加固PHP环境的相关文章

加固PHP环境(转)

作者:Albert PHP作为Apache的模块运行时,Apache本身的安全起主导作用,因此如果配置正确的话,PHP应该是一个十分安全的环境,但是如果PHP是以CGI方式来运行的话,就没有这么安全了. 本文中提到的操作,对Unix和Windows都适用. 一.作为Apache模块来运行 因为一般说来,Apache会以"nobody"或者"www"来运行,所以,PHP作为模块是十分安全的. 如果PHP在虚拟主机环境下,可能会产生用户能浏览其他用户文件的危险.一个简单

云计算和虚拟化对数据中心安全的作用

在未来的2010年期间,虚拟化和云计算的优点将被包括在大多数企业的IT基础设施的讨论中.虚拟化已经被证明了它的价值,节约成本,通过服务器整合,更好地利用资源.在服务器的基础设施方面,更多地使用了这项技术. 软件作为服务(Software-as-a-Service)应用的兴起,如salesforce.com,以及IT服务外包的成功说明了远程的计算方法,这是一个更有效的方式,给用户技术资源,帮助云计算获得更多的企业决策者的购买.但是,作为新的IT基础设施的行业,IT的安全暗示着什么? 专家为什么要关

大型运维环境实施安全加固经验谈

前言安全加固在安全甚至运维领域,已经是一个大家都不再感到陌生的名字了.相当多的安全甚至集成公司,都会再项目工程中提供此类服务.Coolc从事工作以来,也大大小小的实施了相当多次的安全加固工作,最近完成了一个大型运维环境的加固工作,积累了一些经验,现在记录下来与大家分享.因为所属工作的原因,coolc不会透露具体的操作的技术细节,这点还希望大家能见谅,但是Coolc会更多的阐述记录在项目操作中框架性思维和理念,同大家分享我的收获和经验.背景本次项目之所能称之为大型项目,主要是基于如下几个特点.*

户外光纤布设应紧扣环境要求

光纤到户室外布设问题已经是业内关注焦点,在采用较多的掩埋式布设方式建设FTTH时,需要综合衡量成本.灵活性.使用性能.可访问性.抗环境干扰性和温差适应性等多种指标. 目前,光纤到户网络体系中的户外部分在连接掩埋式分支线缆时最常用的两种创建访问点的方式是地上(落地式)和地下(手孔式).但是,每一种方式都要考虑许多重要问题,比如熔接vs.连接头.访问的便利性.环境问题和剧烈的温度变化的影响. 连接头更具户外使用优势 关于在户外采用熔接方式还是使用连接头的问题,已经过了长期的详细讨论,两种方式各有优势

LINUX安全加固

  一. 账户安全 1.1 锁定系统中多余的自建帐号 检查方法: 执行命令 #cat /etc/passwd #cat /etc/shadow 查看账户.口令文件,与系统管理员确认不必要的账号.对于一些保留的系统伪帐户如:bin, sys,adm,uucp,lp, nuucp,hpdb, www, daemon等可根据需要锁定登陆. 备份方法: #cp -p /etc/passwd /etc/passwd_bak #cp -p /etc/shadow /etc/shadow_bak 加固方法:

在 windows(cygwin) 或 mac 下安装git、node、ruby等前端开发环境

我记得每一年技术部年会都会由老大说出一个技术主题,之前有服务化.模块化.工具化.数据化等等等等,今年的主题是全栈.遥想当年,在供职过的两家公司什么抗机器.装机架:什么安装系统.加固.搭建Web或任务应用的前后端环境.打包发布.网络配置:什么JavaScript.CSS.VB..NET.PHP.JAVA等等语言:什么Mootools.JQuery.Ext.Lucene.Solr.Hibernate.Spring:什么Oracle.Mysql.SQLServer.MongoDB.PL/SQL --

在 Ubuntu 16.04 为 Nginx 服务器安装 LEMP 环境(MariaDB,PHP 7 并支持 HTTP 2.0)

LEMP 是个缩写,代表一组软件包(L:Linux OS,E:Nginx 网络服务器,M:MySQL/MariaDB 数据库和 P:PHP 服务端动态编程语言),它被用来搭建动态的网络应用和网页. (LCTT 译注:为何采用 LEMP 而不是 LNMP 的缩写?据 https://lemp.io/ 的解释:Nginx 的发音是 Engine-X,重要的发音而不是首字母,而且 LEMP 实际上是可读的,而 LNMP 看起来只是字母表.) 在 Ubuntu 16.04 安装 Nginx 以及 Mar

如何在生产环境运行容器

本文讲的是如何在生产环境运行容器[编者的话]Vivek Juneja是一名工作首尔的云服务工程师.他从2008年就开始接触云服务,是最早的AWS和Eucalyptus的使用者.本文中总结了在生产环境中使用容器的几个方面,特别是对虚拟机与容器的混合部署的观点很值得推荐给大家. 如果只是把容器限制在开发测试环境中,那么您并没有享受到面向容器研发和发布工作的全部红利.对在生产环境中使用容器的抵触情绪来源于对安全与隔离性的担忧,同时也包括对管理容器的运维经验的缺乏. 在不同程度上使用容器的组织中,迁移这

《黑客秘笈——渗透测试实用指南(第2版)》—第1章1.5节构建渗透测试环境

1.5 构建渗透测试环境 在本书第1版中,收到很多关于为什么要让读者搭建和安装工具而不是创建脚本自动化完成这些工作的评论.主要原因是想让读者亲自经历这些步骤,这些工具都非常重要,搭建和安装的过程将有助于您知道武器库里都有什么工具.以Kali Linux为例,它包括大量工具,而且进行了很好的组织和归类,但是如果不知道这个工具已经安装了或者没使用它进行过单独的攻击,那么在紧急的情况下很难正确使用这个工具. 1.5.1 安装一个渗透测试环境 如果您根据本书第1版建立了测试环境,就可以跳过本节.众所周知