PHP安全性漫谈分享

本文所讨论的安全性环境是在Linux+Apache+Mysql+PHP。超出此范围的安全性问题不在本文范畴以内 1、apache server安全性设置 

一、以Nobody用户运行 

通常状况下,Apache是由Root 来安装和运行的。若是Apache Server进程具备Root用户特权,那么它将给系统的安全构成很大的威胁,应确保Apache Server进程以最可能低的权限用户来运行。经过修改httpd.conf文件中的下列选项,以Nobody用户运行Apache 达到相对安全的目的。 
User nobody 
Group# -1 

二、ServerRoot目录的权限 

为了确保全部的配置是适当的和安全的,须要严格控制Apache 主目录的访问权限,使非超级用户不能修改该目录中的内容。Apache 的主目录对应于Apache Server配置文件httpd.conf的Server Root控制项中,应为: 
Server Root /usr/local/apache 

三、SSI的配置 

在配置文件access.conf 或httpd.conf中的确Options指令处加入Includes NO EXEC
IIS7-VPS大全选项,用以禁用Apache Server 中的执行功能。避免用户直接执行Apache 服务器中的执行程序,而形成服务器系统的公开化。 
php


Options Includes Noexec 


四、阻止用户修改系统设置 

在Apache 服务器的配置文件中进行如下的设置,阻止用户创建、修改 .htaccess文件,防止用户超越能定义的系统安全特性。 

AllowOveride None 
Options None 
Allow from all 

而后再分别对特定的目录进行适当的配置。 

五、改变Apache 服务器的缺省访问特性 

Apache 的默认设置只能保障必定程度的安全,若是服务器可以经过正常的映射规则找到文件,那么客户端便会获取该文件,如http://local host/~ root/ 将容许用户访问整个文件系统。在服务器文件中加入以下内容: 

order deny,ellow 
Deny from all 

将禁止对文件系统的缺省访问。 

六、CGI脚本的安全考虑 

CGI脚本是一系列能够经过Web服务器来运行的程序。为了保证系统的安全性,应确保CGI的做者是可信的。对CGI而言,最好将其限制在一个特定的目 录下,如cgi-bin之下,便于管理;另外应该保证CGI目录下的文件是不可写的,避免一些欺骗性的程序驻留或混迹其中;若是可以给用户提供一个安全性 良好的CGI程序的模块做为参考,也许会减小许多没必要要的麻烦和安全隐患;除去CGI目录下的全部非业务应用的脚本,以防异常的信息泄漏。 

七、SSL连接加密 

以上这些经常使用的举措能够给Apache Server 一个基本的安全运行环境,显然在具体实施上还要作进一步的细化分解,制定出符合实际应用的安全配置方案。 

2、PHP安全性设置 

服务器并不能阻止全部的安全问题,例如程序漏洞问题、用户输入表单问题、PHP文件权限问题等。 
也能够经过一些手段来迷惑黑客或者别有用心者。 
一、程序代码漏洞问题 

不少 PHP 程序所存在的重大弱点并非 PHP 语言自己的问题,而是编程者的安全意识不高而致使的。所以,必须时时注意每一段代码可能存在的问题,去发现非正确数据提交时可能形成的影响。 
复制代码 代码以下: 
<?php 
unlink ($evil_var); 
fwrite ($fp, $evil_var); 
system ($evil_var); 
exec ($evil_var); 
?> 

必须时常留意你的代码,以确保每个从客户端提交的变量都通过适当的检查,而后问本身如下一些问题: 

此脚本是否只能影响所预期的文件? 
非正常的数据被提交后可否产生做用? 
此脚本能用于计划外的用途吗? 
此脚本可否和其它脚本结合起来作坏事? 
是否全部的事务都被充分记录了? 
在写代码的时候问本身这些问题,不然之后可能要为了增长安全性而重写代码了。注意了这些问题的话,也许还不彻底能保证系统的安全,可是至少能够提升安全性。
sql

相关文章
相关标签/搜索