前一排服务器被放了后门 入侵者居然大白天在服务器上面打包整站程序,让人震惊的同时也让我们看清了我们服务器安全,代码安全方面的严重隐患!
这周总结了部分php安全方面的知识,就算浅薄,权当亡羊补牢也好,先记下来,以供日后参考。
php.ini 设置
1.disable_functions =
phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec
,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,
pfsockopen,openlog,syslog,rea dlink,symlink,popepassthru,stream_socket_server,
get_current_user,leak,putenv,popen,opendir
这类函数能禁止就禁止
2.设置“safe_mode”为“on”
3.禁止“open_basedir” 可以禁止指定目录之外的文件操作
4.expose_php设为off 这样php不会在http文件头中泄露信息
5.设置“allow_url_fopen”为“off” 可禁止远程文件功能
6.“log_errors”设为“on” 错误日志开启
php编码方面 要注意的问题如下:
1.要有“用户提交的信息皆危险”的意识 所有用户提交的信息 不管是表单传的 post get 或是其他形式提交的数据 都要单独写个过滤函数处理一遍,养成习惯,用户提交的 都用这个函数过一遍,主要是过滤特殊字符,strip_tags很有效, 如果没有get_magic_quotes_gpc 要用这个函数mysql_real_escape_string再过滤一遍,确保安全,当然有特殊要求的,大可自己再弄严格点的过滤过程。这一步做好了,可大大减少代码出现漏洞的机会。
2.检查程序逻辑的漏洞,不要犯低级的逻辑错误。
3.如果怀疑程序被放了后门 大可先检查有没有一句话木马 eval($_POST[ 全站搜索php代码有没有这样的源代码,有的话,几乎可以断定会出问题!
4.平时php文件要命名规范 至少让自己可以一目了然,哪些php文件名字有问题
5.如用开源代码,有补丁出来的话,尽快打上补丁。
6.如果攻击者拿到了服务器的最高权限,有可能通过修改服务器的配置文件php.ini来达到他们隐藏后门的目的,前几年比较流行。原理如下:
php.ini 里面的这两个配置项:auto_prepend_file ,auto_append_file 可以让php解析前,自己加点东西进去 Automatically add files before or after any PHP document
如果被配置了eval()函数的后门 那就很阴险了,php文件代码里面查不出,只会在php解析前包含eval()函数进来 并且因为是全局的 所以所有php页面都是后门!
所以要先确认auto_prepend_file ,auto_append_file没被配置成其他东西,才进行第3点的源代码检查。
7.两个查后门的实用linux命令:
find /data/web/website/ -iname *.php -mtime -35 找出/data/web/website/目录下 35分钟前新建的php
find /data/web/website/ -name “*.php” | xargs grep “eval($_POST[” 找出/data/web/website/ 里面源码包含eval($_POST[的php文件