什么是危险函数?
函数设计出来就是让人使用的,之所以危险,是因为其功能过于强大,开发人员特别是刚从业的人员很少会完整阅读完整个文档,再或者是没有意识到当给这些函数传递一些非常规的,外部可控的参数会带来什么影响。
$ GET //数组,存放着所有通过URL参数传递的数
$ POST //数组,当HTTP POST请求的Content-Type是application/x-www-form-urlencoded或multipart/form-data的部分解析成关联数组
$ FILES //数据,存放着HTTP POST上传的文件信息
$ COOKIE //数组,存放着HTTP头里面cookie段内容
$ REOUEST //数组,默认情况下包含了$GET,$ POST,$ COOKIE的数据
$ SERVER //数组包含了HTTP头,服务器环境等信息
$ SESSION //数组,存放当前会话可用的session变量
PHP中危险函数的五大特性
条件
:参数是否可控
特性
:
1.能够执行任意代码
2.常见能够读取网路资源的函数
3.能够执行系统命令或调用外部程序的函数
4.能够操作文件
5.能够修改上下文环境
执行任意代码的函数
eval 函数
assert函数
create_function 函数
preg_replace 函数
call_user_func /call_user_func_array 函数
array_map 函数
array_filter 函数
usort/uasort 函数
$a($b)动态函数
读取网络资源的函数
Fopen()
File_get_content()
curl()
操作文件的函数
Copy()
File_get_contents()/ File_put_contens
File()
Fopen()
Move_uploaded file()
Readfile()
Rename()
Rmdir()
Unlink()
改变上下文环境的函数
Extract 函数
Parse_str函数
import_request_variables 函数
$$变量覆盖