用Suhosin加强PHP脚本语言安全性

PHP是一种非常流行的网站脚本语言,但是它本身所固有的安全性是非常薄弱。本文讲述了PHP增强计划(Hardened-PHP project)和新的Suhosi计划,Suhosin提供了增强的PHP的安全配置。

PHP是带有争论地但又是最流行的一种网站脚本语言。它之所以流行,是因为它低廉的价格,然而,这低廉的价格导致用PHP写的网站应用程序越来越多的同时也越来越多的展现出PHP本身在安全上的脆弱,这种安全特性显示出PHP是极不可靠,不过同时对这个脚本语言本身而言它又是非常灵活的,使用它就能很容易的实现代码,不过这些代码都是臃肿的且不安全的,虽然是这样它还是一直都拥有很多的使用者。你可以根据实际情况来假设,一次又一次,各种应用软件都体现了这种脆弱性:容易受到SQL注入、跨站脚本、任意执行指令等等的攻击。

因为象safe_mode和open_basedir这样内置的PHP安全措施将被忽略,PHP增强计划创建的PHP更具有安全性,同时也对PHP进行校验检查。最初,这些是由增强的PHP补丁完成的,这些补丁需要修补并重新编译PHP自身。最近,PHP增强计划发布了一个名为Suhosin的新工程。

Sohosin包括有两部分:第一部分是PHP的补丁,这个补丁强化了Zend引擎自身,以免可能产生缓冲溢出,也可以防止相关的弱点。第二部分是Suhosin的扩展,这是一个PHP的独立使用模块。这两部分可以一起工作,或者是扩展部分单独工作。

开发人员不希望为了达到安全性而总去维护他们自己的PHP安装设置和他们当然更喜欢直接使用销售商提供的Linux分布系统上PHP,使用扩展模块能提供更多PHP本身所不能具有的安全特点。

扩展模块很容易安装;它也能通过PECL安装,或者是下载后通过编译安装:

$ tar xvzf suhosin-0.9.17

$ cd suhosin-0.9.17

$ phpize

$ ./configure

$ make

$ sudo make install

为了使用suhosin,还需要增加/etc/php.ini,如下所示:

extension=suhosin.so

对于大部分人来说默认的配置选项已经足够了。为了加强设置,可以在/etc/php.ini中增加相应的值。网站中详细地介绍了有关的各种配置选项,这些说明可以帮助你进行初始化配置。

使用Suhosin,你可以得到一些错误日志,你能把这些日志放到系统日志中,也可以同时写到其他任意的日志文件中去;它还可以为每一个虚拟主机创建黑名单和白名单;可以过滤GET和POST请求、文件上载和cookie。你还能传送加密的会话和cookie,可以设置不能传送的存储上线等等。它不像原始的PHP强化补丁,Suhosin是可以被像Zend Optimizer这样的第三方扩展软件所兼容的。

时间: 2024-08-07 05:19:29

用Suhosin加强PHP脚本语言安全性的相关文章

将PHP作为Shell脚本语言使用

脚本 本文出自:http://phpuser.com 作者: y10k翻译 (2002-10-15 06:02:00) --英文原著:Darrell Brogdon,发表于 http://www.phpbuilder.com/columns/darrell20000319.php3) 可能很多人都想过使用PHP编写一些定时发信之类的程序,但是却没有办法定时执行PHP:一次去PHPBuilder的时候,发现了这一篇文章,于是想给大家翻译一下(同时做了一些修改),希望对大家有用.第一次翻译文章,不好

php3:跨平台的服务器端嵌入式脚本语言

      服务器端脚本技术是一种非常有用的东西,将它和客户端脚本技术联合起来应用可以 制作出功能极其强大的页面.好象很久以前有一阵子哪个版(似乎是WWW版)上讨论ASP 到了热火朝天的地步,还有人提议开个ASP版,那就是一种服务器端脚本技术. 通常用的服务器端脚本技术是CGI,NSAPI/ISAPI/FastCGI等等都是对它的改善和扩展. 至于用什么语言来实现CGI技术,没有任何规定,大家一般使用Perl,因为它的字符  功能比较强大.到了需要速度的场合,就用C来实现.    用Perl/C

将PHP作为Shell脚本语言使用_php基础

我们都知道,PHP是一种非常好的动态网页开发语言(速度飞快,开发周期短--).但是只有很少数的人意识到PHP也可以很好的作为编写Shell脚本的语言,当PHP作为编写Shell脚本的语言时,他并没有Perl或者Bash那么强大,但是他却有着很好的优势,特别是对于我这种熟悉PHP但是不怎么熟悉Perl的人. 要使用PHP作为Shell脚本语言,你必须将PHP作为二进制的CGI编译,而不是Apache模式:编译成为二进制CGI模式运行的PHP有一些安全性的问题,关于解决的方法可以参见PHP手册(ht

图形脚本语言sikuli

简介                                                                                                                                                                                                                                                       

关注web编程语言和脚本语言的就业趋势

八月是一个值得关注工作趋势的月份,今天,我们来重点关注web编程语言和脚本语言的就业趋势. 您可能很想知道我所指的"web编程语言和脚本语言"到底是什么?本文中我列举了Ruby.Python.PHP.JavaScript.Flex 以及 Groovy等编程语言.我在这里并没有提及Rails,是因为我想尽量将开发框架和开发语言区分开. 1. Indeed.com趋势分析图:(横坐标表示时间:纵坐标表示所匹配工作岗位的百分比) 同其它语言相比,JavaScript的需求量最大,但是在过去六

photoshop动作自动化脚本语言教程

自动化对每个设计师的工作来说是很有用的.它可以在重复的任务上节省宝贵的时间,还能够帮我们更快捷.更容易的解决一系列问题. 你可以使用photoshop的动作来使工作流程自动化,这是很流行的,大多数人都知道并且已经在使用的方法.今天,我们将介绍给你一种高级的自动化技巧:脚本语言.所有的这一切仅仅需要你有一点点关于JavaScript的基本知识,这对于我们中的一些网页设计师往往都是具备的. 我很多年前就知道Photoshop的脚本语言,但是我几个月前才开始决定研究它.我忽视了它是因为我认为那是聪明的

将Delphi作为ASP.NET的脚本语言

asp.net|脚本    将Delphi视为脚本语言       支持ASP.net的第一件事是让ASP.NET将Delphi视为脚本语言,让ASP.NET能够为各种ASP文件类型调用Delphi的.NET编译器.       ASP.NET要在IIS虚路径的根目录下寻找Web.config文件.下面是ASP.NET中使用Delphi作脚本语言的web.config配制文件内容:       <configuration>    <system.web>    <compi

选择合适的java脚本语言

脚本 选择合适的java脚本语言--如果你正考虑在java应用中集成脚本解释器,最难得是决定使用那种 摘要:脚本语言已经向java开发者证明了它的价值.它让客户实现应用功能的扩展和界面的个性化,从而程序的价值得以提升.另外,它们可以显著的简化程序开发者的设计任务,通过实现动态定义.装载和评估.对于开发人员,集成一种或多种脚本语言的任务是简单的,从越来越长的可选列表中选出一个确实困难的.本文描述了一些伴随java应用中脚本语言支持的问题,并从不同角度比较了Groovy, JudoScript, P

用.net (在IIS中)创建虚拟目录(包括 脚本语言)

iis|创建|脚本|虚拟目录 两种语言在IIS中创建虚拟目录 用.net在IIS中创建虚拟目录 使用.NET的目录服务就可以访问IIS的设置,添加虚拟目录其实就是创建一个DirectoryEntry复杂的在于DirectoryEntry的属性,其实就是虚拟目的一些配置,比如,权限,是否要log,应用程序名等Properties非常多,而且文档不太好找详细可以参考MSDN以下内容help://MS.MSDNQTR.2004JUL.1033/iissdk/iis/configuring_proper