php文件上传全攻击

1。的组成部分
允许用户上传文件,并在HTML表单声明中添加上传的属性:
enctype = 'multipart /表单数据
表格的方法必须张贴。
表格选项max_file_size隐藏域是用来限制上传文件的大小,它必须被放置在文件的表单元素的前面,和单位是字节。
如:
复制代码代码如下所示:





2。处理上传文件
当上传PHP接收的文件,可以在_files美元的超级全局数组的数组信息。
例如,如果在一个表格文件输入框是upload_file,所有关于文件的信息包含在数组_files { 'upload_file}。
例如:用户上传的图像aaa.jpg排列如下:
文件的名称时,名称p5pp .jpg上传
键入文件类型
临时文件名的tmp_name / / phpjksdf TMP服务器端
上传错误返回值
大小为2045文件的实际大小

上面数组中的错误返回一个不同的常量值,如下所示:
upload_err_ok没有发生错误,文件上传成功
该upload_err_ini_size文件大小超过PHP.INI upload_max_filesize期权的价值
大小的upload_err_form_size上传文件中的HTML表单超过max_file_size期权价值。支票的形式'up_file} { { $文件'size}处理程序
唯一的upload_err_partial部分文件上传
upload_err_no_file用户不提供任何文件上传
后处理的具体例子:
复制代码代码如下所示:
如果(!move_uploaded_file($ _files { F } { 'tmp_name},上传 / 。_files美元{ F } { 'name' }。{jpg){
错误;
}

功能:
move_uploaded_file手机上传的临时文件到指定目录
实例uff1a
move_uploaded_file('temporary文件名','指定文件路径)

is_uploaded_file决定它是否是通过HTTP POST文件上传
例子:
复制代码代码如下所示:
如果(!is_uploaded_file($ _files { F } { 'tmp_name ' })){
回声非法;
}


三.相关参数

PHP上传php.ini中的设计参数:
file_uploads可以上传的文件,默认

upload_tmp_dir上传一个文件以防止临时目录,和系统的默认位置是不明确的

upload_max_filesize允许的文件的最大大小是上传,并默认为2M

post_max_size控制采用POST方法进行PHP可以接受在表单提交的数据量最大。如果你想上传PHP文件,该值将更改为大于upload_max_filesize。

max_input_time以秒为单位来限制通过邮政/接收数据的时间得到 /放。

为了避免在运行脚本的系统内存的大量使用,memory_limit允许PHP定义内存使用配额。通过设置参数使最大内存容量,一个脚本可以使用,应适当大于post_max_size价值。

的max_execution_time用于设置脚本等待脚本在脚本的被迫终止的完成时间,在一个单位秒。二选项可以限制死循环的剧本,但是当有一个长时间的法律活动,如上传大文件,这个功能也可以引起操作失败。在这种情况下,应考虑增加这个变量。

4。多文件上传的考虑
多文件上传可以用$ _files阵列容易实现。$ _files阵列可以得到所有文件域里面的内容客户端形式把所有的文件在同一形式上传。

5。内存限制的突破

方法1:
修改php.ini memory_limit价值更大,如64m
方法二:
使用Apache的重写方法的memory_limit值是动态的修改。首先,创建.htaccess文件,存储在文件上传程序的当前目录。代码如下:
php_value memory_limit 100m
php_value post_max_size 30m
php_value upload_max_filesize 30m
php_value max_execution_time 300
php_value max_input_tim 300
在php_value display_errors