艾瑞网

和php有关的几种常见安全详解

2011-03-24 11:55   聚锐网站长之家  dudu(编译)  点击:次   打印文章

  站长买卖(http://jy.chinaz.com)帮站长赔本虚拟主机评测+IDC导航=IDC123.COM

  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用户只能施行我们想让它无能的事情,给每一个目录树立一个独自能读写的用户。

  这也是以后很多虚拟主机提供商的盛行配置办法哦,不过这种办法用于防止这里就显的有点大材小用了。

  



哺乳期可以吃橙子吗  脂肪瘤短期内增大  安利产品介绍  安装福克斯dvd导航  600615  

顶一下
(0)
0%
踩一下
(0)
0%
标签:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
--- 站长工具推荐 ---

超级管家V3.038

10万站长的桌面常备工具

超级写手V6.5

博客营销-网络推广专家

超级采集V5.0

会用鼠标就会的采集软件
友情链接 聚锐网   螺栓拉伸器   伟哥   友链交换平台   SEO优化   北京婚纱摄影工作室   腾讯科技   翡翠