编写PHP的安全策略

2016-01-29 15:00 2 1 收藏

编写PHP的安全策略,编写PHP的安全策略

【 tulaoshi.com - PHP 】

 


PHP最初是被称作Personal Home Page,后来随着PHP成为一种非常流行的脚本语言,名称也随之改变了,叫做Professional HyperText PreProcessor。以PHP4.2为例支持它的WEB服务器有:Apache, Microsoft Internet information Sereve, Microsoft Personal web Server,AOLserver,Netscape Enterprise 等等。

PHP是一种功能强大的语言和解释器,无论是作为模块方式包含到web服务器里安装的还是作为单独的CGI程序程序安装的,都能访问文件、执行命令或者在服务器上打开链接。而这些特性都使得PHP运行时带来安全问题。虽然PH P是特意设计成一种比用Perl或C语言所编写的CGI程序要安全的语言,但正确使用编译时和运行中的一些配置选项以及恰当的应用编码将会保证其运行的安全性。

一、安全从开始编译PHP开始。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

在编译PHP之前,首先确保操作系统的版本是最新的,必要的补丁程序必须安装过。另外使用编译的PHP也应当是最新的版本,关于PHP的安全漏洞也常有发现,请使用最新版本,如果已经安装过PHP请升级为最新版本:4.2.3

相关链接:http://security.e-matters.de/advisories/012002.html

安装编译PHP过程中要注意的3个问题:

1、只容许CGI文件从特定的目录下执行:首先把处理CGI脚本的默认句柄删除,然后在要执行CGI脚本的目录在http.conf 文件中加入ScriptAlias指令。

#Addhadler cgi-script .cgi


ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

<Directory "/usr/local/apache/cgi-bin'

AllowOverride None

Options None

Order allow,deny

Allow from all

</Directory


<Directory "/home/*/public_html/cgi-bin"

AllowOverride None

Options ExecCGI

Order allow,deny

Allow from all

</Directory
 

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

 

SriptAlias的第一个参数指明在Web中的可用相对路径,第二个参数指明脚本放在服务器的目录。应该对每个目录

别名都用Directory,这样可使得除系统管理员之外的人不知道Web服务器上CGI脚本的清单。

Directory允许用户创建自己的CGI脚本。也可用SriptAliasMatch,但Directory更容易使用。 允许用户创建自己

CGI脚本可能会导致安全问题,你可能不希望用户创建自己的CGI。 Apache默认配置是注释掉cgi—script的处理句柄,但有/cgi-bin目录使用SriptAlias和Directory指令。 你也可禁止CGI执行,但仍允许执行PHP脚本。

2.把PHP解析器放在web目录外

把PHP解析器放在Web目录树外是非常重要的做法。这样可以防止web服务器对PHP的解析器的滥用。特别是

不要把PHP解析器放在cgi-bin或允许执行CGI程序的目录下。然而,使用Action解析脚本是不可能的,因为用Action指令时,PHP解析器大多数要放在能够执行CGI的目录下只有当PHP脚本作为CGI程序执行时,才能把PHP解析器放在Web目录树之外。

如果希望PHP脚本作为CGI程序执行(这们可以把PHP解析器放在Web目录树之外),可以这样:

( 1)所有的PHP脚本必须位于能执行CGI程序的目录里。

( 2)脚本必须是可执行的(仅在UNIX/Linux机器里)。

(3)脚本必须在文件头包括PHP解析器的路径。

你可用下面命令使PHP脚本为可执行:

#chmod +x test.php4


这样使在当前目录下的文件名为test.PhP4的脚本变为可执行。 下面是一个能作为CGI程序运行的PHP脚的小例子。

#!/usr/local/bin/php

echo "This is a  my small cgi program”
 

3. 按Apache模块方式安装:

当将PHP作为Apache模块使用时,它将继承Apche的用户权限(一般情况下用户为“nobody”)。这一点对于安全性和

验证有不少影响。例如,使用PHP访问数据库,除非数据库支持内建的访问控制,将不得不设置数据库对于用户“nobody”

的可访问权限。这将意味着恶意的脚本在没有访问用户名和密码,也能访问并修改数据库。通过Apache验证来保护数据不被暴露,或者也可使用LDAP、.htaccess文件等设计自己的访问控制模型,并在PHP脚本中将此代码作为其中部分引入。 通常,一旦安全性建立,此处PHP用户(此情形即Apache用户)就风险大大降低了,会发现PHP护现在已被封禁了将可能的染毒文件写入用户目录的能力。 此处最常犯的安全性错误是赋予Apache服务器根(root)权限。 将Apache用户权限提升到根权限是极端危险的。可能会危及整个系统,因此要小心使用sudo,chroot安全隐患大的命令等。除非你对安全有绝对的掌握,否则不要让其以ROOT权限运行。


二、让PHP的使用更安全。

1、以安全模式运行PHP

以安全模式运行PHP是使PHP脚本安全使用的好方法,特别是在允许用户使用自己开发的PHP脚本时。使用安全模式会使PHP在运行函数时检查是否存在安全问题。 include、readfile、fopen、file、unlink、rmdir等等:被包含的文件或者该文件所在目录的所有者必须是正在运行的脚本的所有

来源:https://www.tulaoshi.com/n/20160129/1495016.html

延伸阅读
标签: 电脑入门
我们单击控制面板→管理工具→本地安全策略后,会进入本地安全策略的主界面。在此可通过菜单栏上的命令设置各种安全策略,并可选择查看方式,导出列表及导入策略等操作。 第一、加固系统账户 a.禁止枚举账号 我们知道,某些具有黑客行为的蠕虫病毒,可以通过扫描Windows 2000/XP系统的指定端口,然后通过共享会话猜测管理员系统口令...
数据库安全性问题一直是围绕着数据库管理员的恶梦,数据库数据的丢失以及数据库被非法用户的侵入使得数据库管理员身心疲惫不堪。围绕数据库的安全性问题提出了一些安全性策略,希望对数据库管理员有所帮助。对于数据库数据的安 全问题,数据库管理员可以参考有关系统双机热备份功能以及数据库的备份和恢复的资料。 一、组和安全性: ...
标签: 电脑入门
电脑系统的安全离不开安全策略的设置,如果安全策略设置没有设置好的话电脑的安全就得不到保证,下面图老师小编就给大家介绍下Linux下安全策略设置的方法,一起来学习下吧。 安全第一对于linux管理界乃至计算机也都是一个首要考虑的问题。加密的安全性依赖于密码本身而非算法!而且,此处说到的安全是指数据的完整性,由此,数据的认证安全...
标签: 浏览器
正确部署IE浏览器的安全策略   在一阵子的博文中,曾经写过,通过组策略的设定,让用户登录就进入IE浏览器,关闭则注销,并且还讲述关于企业内部需要限制IE的一些功能。虽然这样做了,但是我们的客户机并没有达到安全的效果,网络才是病毒传播的重灾区。有些网站设置成打开网页就自动下载其中的内容,这样就完成了木马,病毒的传播。...
SQL*DBA命令的安全性: 如果您没有SQL*PLUS应用程序,您也可以使用SQL*DBA作SQL查权限相关的命令只能分配给Oracle软件拥有者和DBA组的用户,因为这些命令被授予了特殊的系统权限。 (1) startup (2) shutdown (3) connect internal 数据库文件的安全性: Oracle软件的拥有者应该这些数据库文件($ORA...

经验教程

87

收藏

19
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部