| 关键词: nbsp PHP 配置 文件 安全 apache 目录 方式 函数 变量 |
PHP自身再老版本有一些疑问,比如在 php4.3.10和php5.0.3以前有一些比拟严重的bug,所以推荐运用新版。另外,现在闹的轰轰烈烈的SQL Injection也是在PHP上有许多运用方式,所以要保证安全,PHP代码编写是一方面,PHP的配置更是十分主要。 咱们php手手工装置的,php的默许配置文件在 /usr/local/apache2/conf/php.ini,咱们最首要就是要配置php.ini中的内容,让咱们执行php可以更安全。整个 PHP中的安全配置首要是为了防止phpshell和SQL Injection的攻击,一下咱们渐渐讨论。咱们先运用任何编辑工具翻开/etc/local/apache2/conf/php.ini,假设你是采用其他方式装置,配置文件能够不在该目录。 (1) 翻开php的安全方式 php的安全方式是个十分主要的内嵌的安全机制,可以控制一些php中的函数,比如system(), 同时把许多文件操作函数执行了权限控制,也不准许对某些主要文件的文件,比如/etc/passwd, 但是默许的php.ini是没有翻开安全方式的,咱们把它翻开: safe_mode = on (2) 用户组安全 当safe_mode翻开时,safe_mode_gid被关闭,那么php脚本可以对文件执行访问,并且类似 组的用户也可以够对文件执行访问。 建议配置为: safe_mode_gid = off 假设不执行配置,能够咱们无法对咱们服务器站点目录下的文件执行操作了,比如咱们须要 对文件执行操作的时辰。 (3) 安全方式下执行顺序主目录 假设安全方式翻开了,但是却是要执行某些顺序的时辰,可以指定要执行顺序的主目录: safe_mode_exec_dir = D:/usr/bin 普通情况下是不须要执行什么顺序的,所以推荐不要执行系统顺序目录,可以指向一个目录, 然后把须要执行的顺序拷贝从前,比如: safe_mode_exec_dir = D:/tmp/cmd 但是,我更推荐不要执行任何顺序,那么就可以指向咱们网页目录: safe_mode_exec_dir = D:/usr/www (4) 安全方式下包括文件 假设要在安全方式下包括某些公共文件,那么就修正一下选项: safe_mode_include_dir = D:/usr/www/include/ 原本普通php脚本中包括文件都是在顺序自己以前写好了,这个可以依据详细须要配置。 (5) 控制php脚天性访问的目录 运用open_basedir选项可以控制PHP脚本只好访问指定的目录,这样可以防止PHP脚本访问 不应该访问的文件,必需水平极限定了phpshell的危害,咱们普通可以配置为只好访问站点目录: open_basedir = D:/usr/www (6) 关闭风险函数 假设翻开了安全方式,那么函数制止是可以不须要的,但是咱们为了安全照旧思索进去。比如, 咱们觉得不期盼执行包括system()等在那的可以执行命令的php函数,或许可以检查php信息的 phpinfo()等函数,那么咱们就可以制止它们: disable_functions = system,passthru,exec,shell_exec,popen,phpinfo 假设你要制止任何文件和目录的操作,那么可以关闭许多文件操作 disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir, rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown 以上只是列了局部不叫常用的文件处理函数,你也可以够把上面执行命令函数和这个函数结合, 就可以抵抗大局部的phpshell了。 (7) 关闭PHP版本信息在http头中的透露 咱们为了防止黑客获取服务器中php版本的信息,可以关闭该信息斜路在http头中: expose_php = Off 比如黑客在 telnet www.chinaz.com 80 的时辰,那么将无法看到PHP的信息。 (8) 关闭注册全局变量 在PHP中提交的变量,包括运用POST或许GET提交的变量,都将自动注册为全局变量,可以直接访问, 这是对服务器十分不安全的,所以咱们无法让它注册为全局变量,就把注册全局变量选项关闭: register_globals = Off 当然,假设这样配置了,那么获取对应变量的时辰就要采用合理方式,比如获取GET提交的变量var, 那么就要用$_GET['var']来执行获取,这个php顺序员要留意。 (9) 翻开magic_quotes_gpc来防止SQL注入 SQL注入是十分风险的疑问,小则站点后台被入侵,重则整个服务器沦陷, 所以必需要留意。php.ini中有一个配置: magic_quotes_gpc = Off 这个默许是关闭的,假设它翻开后将自动把用户提交对sql的查询执行转换, 比如把 ' 转为 \'等,这对防止sql注射有严重作用。所以咱们推荐配置为: magic_quotes_gpc = On (10) 错误信息控制 普通php在没有衔接到数据库或许其他情况下会有提示错误,普通错误信息中会包括php脚本当 前的途径信息或许查询的SQL语句等信息,这类信息提供应黑客后,是不安全的,所以普通服务器建议制止错误提示: display_errors = Off 假设你却是是要显示错误信息,必需要配置显示错误的级别,比如只显示劝诫以上的信息: error_reporting = E_WARNING & E_ERROR 当然,我照旧建议关闭错误提示。 (11) 错误日志 建议在关闭display_errors后可以把错误信息记载下来,便于查找服务器运转的原由: log_errors = On 同时也要配置错误日志寄存的目录,建议根apache的日志存在一同: error_log = D:/usr/local/apache2/logs/php_error.log 留意:给文件必需准许apache用户的和组具有写的权限。 MYSQL的降权运转 新树立一个用户比如mysqlstart net user mysqlstart ****microsoft /add net localgroup users mysqlstart /del 不属于任何组 假设MYSQL装在d:\mysql ,那么,给 mysqlstart 完全控制 的权限 然后在系统服务中配置,MYSQL的服务属性,在登录属性当中,挑选此用户 mysqlstart 然后输入密码,确定。 重新启动 MYSQL服务,然后MYSQL就运转在低权限下了。 假设是在windos平台下搭建的apache咱们还须要留意一点,apache默许运转是system权限, 这很恐惧,这让人觉得很不爽.那咱们就给apache降降权限吧。 net user apache ****microsoft /add net localgroup users apache /del ok.咱们树立了一个不属于任何组的用户apche。 咱们翻开计算机维护器,选服务,点apache服务的属性,咱们挑选log on,挑选this account,咱们填入上面所树立的账户和密码, 重启apache服务,ok,apache运转在低权限下了。 实践上咱们还可以议决配置各个文件夹的权限,来让apache用户只好执行咱们想让它能力的事情,给每一个目录树立一个独自能读写的用户。 这也是现在许多虚拟主机提供商的盛行配置方法哦,不过这种方法用于防止这里就显的有点大材小用了。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|