重燃你的PHP安全之火.pdf,读《重燃你的php之火》总结笔记

1.文件包含变量导致远程文件包含

include ("$cfgdir/site${site}.php"); //把$cfgdir 这个路径里的site${site}.php 包含进来

可以把变量$site 指定远程文件http://evil.com/cmd.gif 去调用,也可以是本地的一个文件

解决方案:

php.ini 里的allow_url_fopen 设为off 禁止远程使用文件

2.文件目录列表

目录列表,下载重要文件

解决方案:

open_base_dir 禁止使用目录列表,或每个目录下都存放一个index.html,推荐第一种

3.文件操作函数导致源代码泄漏(fopen(),file(),readfile(),openfile())

$articlearray=openfile("$dbpath/$fid/$tid.php"); //打开$dbpath/$fid 这个路径的$tid.php 文件

$topic_detail=explode("|",$articlearray[0]); //用分割符|读出帖子的内容

构造/read.php?fid=123&tid=../index 可以查看上级index.php源代码

fwrite() 写入一句话***

unlink() 传入任意文件,删除任意文件

解决方案:

过滤特殊字符

4.任意代码执行

eval(),preg_replace(),exec(),system(),popen(),proc_open(),proc_close()

提交可执行代码和系统命令

解决方案:

使用escapeshellarg()或escapeshellcmd()函数过滤

5.特殊字符过滤

../ win路径隐患

..\ win和linux路径隐患

< > 跨站脚本***xxs

'?? 执行系统命令

; | 截断程序流程

6.php的一些安全配置参数

safe_mode_gid = On? //开启安全模式,会禁止系统命令执行函数

register_globals = Off //关闭全局变量,防止变量覆盖漏洞

php_admin_value open_basedir /usr/local/apache/htdocs //限制php文件操作目录为网站根目录

allow_url_fopen = Off //关闭远程文件打开功能,防止include('')文件包含一句话***

php_flag engine off

#如果是php3换成php3_engine off

#防止读取任意文件和执行任意命令,限制上传目录权限

open_basedir = "/usr/local/apache/htdocs/" #限制允许操作的父目录

#命令执行漏洞可以用escapeshellcmd()函数过滤传入的命令参数,后再使用,杜绝命令执行漏洞

error_reporting = E_ALL & ~E_NOTICE //屏蔽警告信息

display_errors = On //屏蔽错误信息

log_errors = On? //开启错误日志

error_log = /usr/local/apache/logs/php_error.log //错误日志存放目录

disable_functions = phpinfo, get_cfg_var //禁用一些危险函数可以放在这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值