找回密码
 入住遨海湾
搜索
网站解决方案专享优惠-3折上云
查看: 1927|回复: 1

Windows 2003 安全设置之PHP篇

[复制链接]
发表于 2008-10-21 15:54:42 | 显示全部楼层 |阅读模式

登录后查才能浏览下载更多咨询,有问题联系QQ:3283999

您需要 登录 才可以下载或查看,没有账号?入住遨海湾

×
今天来说说windows 2003服务器上的PHP的安全问题。一般来说,Windows的服务器上不会只运行asp或者aspx程序,PHP的程序很多,所以一般都有在服务器上装PHP,既然有装,就要对PHP进行安全设置。# Y, I, n6 ?: |# B2 M/ ` 1、把safe_mode=off 改成 safe_mode=on,使php运行于安全模式。运行于安全模式的PHP能禁止一些系统命令的执行,如果你要执行这些系统命令,可以在 "safe_mode_exec_dir =" 设置,如果你要D盘的wwwroot可以执行系统命令函数,那么就把这个设置为"safe_mode_exec_dir = D:\wwwroot" 。& N n2 }) f H. i7 d 0 Y! n. A' F! c/ K8 }' f4 j 2、找到disable_functions这行,改成"disable_functions = phpinfo,passthru,exec,shell_exec,system,这样设置就是不允许在PHP中执行这些函数。 " ^3 D! K+ S* M6 q 3、把register_globals设置成off,就是关闭全局变量的注册。因为我们通过get或者post提交的变量都会自动注册成全局变量,用户可以访问,这就对服务器造成了不安全。 , E7 b4 s9 q1 {2 |) }7 ^ 4、把magic_quotes_gpc设置成on,防止SQL注入。% Y; n& q% b _0 k 5、把open_basedir前面的分号去掉,设置成你的网站的程序的地址。使PHP不能操作该目录之外的文件。- W* L8 W0 S5 d, x& O1 n+ N# H 6、如果不想让PHP运行时候的出错信息在浏览器中显示,可以设置display_errors = Off。 ) x3 A- E) Z" q* P( @/ w 如此设置之后,PHP的安全就不错了。
遨海湾-心灵的港湾 www.aosea.com
 楼主| 发表于 2008-10-21 16:01:33 | 显示全部楼层
你是说开启safe_mode吗? ( `6 N* \8 S& V$ j# G \限制多了,速度自然慢 V1 k; m$ H) s ~- { 可以关闭的,影响不大~ 8 M E8 W- ^- \; K- R* y - N/ n Y- p0 X Y# k" z以下设置不影响速度的,可以考虑~ 8 n9 W# {3 k. }& d" W7 h5 M- d/ i2 l! `3 l. |( i* R (6) 关闭危险函数 2 |. R$ t# n% G7 U如果打开了安全模式,那么函数禁止是可以不需要的,但是我们为了安全还是考虑进去。比如,我们觉得不希望执行包括system()等在那的能够执行命令的php函数,或者能够查看php信息的phpinfo()等函数,那么我们就可以禁止它们: ; Z$ S0 `) ?7 u3 Edisable_functions = system,passthru,exec,shell_exec,popen,phpinfo [) q0 {6 }, d 如果你要禁止任何文件和目录的操作,那么可以关闭很多文件操作 ( _% C G) W- ^$ Sdisable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir,rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown ( U" Q: M8 y9 ?6 {+ s8 @" o- h以上只是列了部分不叫常用的文件处理函数,你也可以把上面执行命令函数和这个函数结合,就能够抵制大部分的phpshell了。 # m5 _# Q* ?+ h, F; ?' A 7 z& h4 k# c: l(7) 关闭PHP版本信息在http头中的泄漏 : t) j! C, @# G8 O 我们为了防止黑客获取服务器中php版本的信息,可以关闭该信息斜路在http头中: 7 D; D# k5 J& X, j; i3 l. }expose_php = Off 0 a3 ^% I7 U1 F: z1 D比如黑客在 telnet www.aosea.com 80 的时候,那么将无法看到PHP的信息。 2 r" M! F5 o$ ?6 ^! {- s 3 j6 w ^( D' \% V6 M& d/ w% A8 L(8) 关闭注册全局变量 ' m' r! t1 I/ \. M 在PHP中提交的变量,包括使用POST或者GET提交的变量,都将自动注册为全局变量,能够直接访问,这是对服务器非常不安全的,所以我们不能让它注册为全局变量,就把注册全局变量选项关闭: 6 a$ g$ L" H$ C4 O register_globals = Off & \. v; ~. g' s当然,如果这样设置了,那么获取对应变量的时候就要采用合理方式,比如获取GET提交的变量var,那么就要用$_GET['var']来进行获取,这个php程序员要注意。 6 d' P1 r1 v- B3 ]3 u + [6 \! Z( ?' Y5 G/ C4 r (9) 打开magic_quotes_gpc来防止SQL注入 7 v$ X" v5 w% s% X7 JSQL注入是非常危险的问题,小则网站后台被入侵,重则整个服务器沦陷,所以一定要小心。php.ini中有一个设置: . `% w% h% o. `( Q3 n% o9 Jmagic_quotes_gpc = Off 8 c0 S1 i' U, S% P" {6 ?# q. N这个默认是关闭的,如果它打开后将自动把用户提交对sql的查询进行转换,比如把 ' 转为 '等,这对防止sql注射有重大作用。所以我们推荐设置为: - |1 | T6 D+ _, S( q) Zmagic_quotes_gpc = On 9 F& w# A$ k, o) e! m7 ~ ( `4 f$ l$ j2 p( C( z# |1 _ (10) 错误信息控制 4 z4 x, a' h2 O. p6 j2 d1 g/ G' e一般php在没有连接到数据库或者其他情况下会有提示错误,一般错误信息中会包含php脚本当前的路径信息或者查询的SQL语句等信息,这类信息提供给黑客后,是不安全的,所以一般服务器建议禁止错误提示: ; E. ~4 H0 ^% S- W1 u+ U/ u display_errors = Off 2 K. N; C3 `- t 如果你却是是要显示错误信息,一定要设置显示错误的级别,比如只显示警告以上的信息: 8 V4 Y. o F, _1 H error_reporting = E_WARNING & E_ERROR ) ~1 |$ W3 Z7 n1 N当然,我还是建议关闭错误提示。 ) V% a7 W5 F: V' t% z/ O1 c8 D1 ]" | m, P! S) T, ? (11) 错误日志 $ ^8 f" a1 X p, |5 {建议在关闭display_errors后能够把错误信息记录下来,便于查找服务器运行的原因: 1 K/ m, u4 U7 k log_errors = On 2 |5 A5 z6 j6 s. P' b" |7 n同时也要设置错误日志存放的目录,建议根apache的日志存在一起: . l- q* N$ O9 h s& t" Yerror_log = /usr/local/apache2/logs/php_error.log ; {7 h9 X5 P& u! \& t 注意:给文件必须允许apache用户的和组具有写的权限。
遨海湾-心灵的港湾 www.aosea.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 入住遨海湾

本版积分规则

网站解决方案专享优惠-3折上云

QQ|手机版|小黑屋|遨海湾超级社区

GMT+8, 2025-1-18 20:05

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表