愤怒的大鸟 发表于 2015-2-4 00:02:25

PHP教程之静态网页PHP法式中文件上传的平安成绩

在学习PHP这六个月里,每看到一个优秀的php脚本,就会兴奋的手舞足蹈,嘴里还不停的说:太酷了,太酷了。呵呵,很幼稚吧,但这可能就是兴趣。   PHP主动撑持基于RFC 1867的文件上载,咱们看上面的例子:
<FORM METHOD="POST" ENCTYPE="multipart/form-data">
<INPUT TYPE="FILE" NAME="hello">
<INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="10240">
<INPUT TYPE="SUBMIT">
</FORM>
下面的代码让用户从当地机械选择一个文件,当点击提交后,文件就会被上载到办事器。这明显是很有效的功效,然而PHP的呼应体例使这项功效变的不平安。当PHP第一次接到这类恳求,乃至在它入手下手解析被挪用的PHP代码之前,它会先承受近程用户的文件,反省文件的长度是不是超越“$MAX_FILE_SIZE variable”界说的值,假如经由过程这些测试的话,文件就会被存在当地的一个一时目次中。
因而,进击者可以发送恣意文件给运转PHP的主机,在PHP法式还没有决意是不是承受文件上载时,文件已被存在办事器上了。
这里我就不会商使用文件上载来对办事器停止DOS进击的能够性了。
让咱们思索一下处置文件上载的PHP法式,正如咱们下面说的,文件被吸收而且存在办事器上(地位是在设置装备摆设文件中指定的,通常为/tmp),扩大名通常为随机的,相似“phpxXuoXG”的模式。PHP法式需求上载文件的信息以便处置它,这可以经由过程两种体例,一种体例是在PHP 3中已利用的,另外一种是在咱们对之前的办法提出平安通知布告后引入的。
然而,咱们可以一定的说,成绩仍是存在的,大多半PHP法式仍是利用老的体例来处置上载文件。PHP设置了四个全局变量来描写上载文件,好比说下面的例子:
$hello = Filename on local machine (e.g "/tmp/phpxXuoXG")
$hello_size = Size in bytes of file (e.g 1024)
$hello_name = The original name of the file on the remote system (e.g "c:\\temp\\hello.txt")
$hello_type = Mime type of uploaded file (e.g "text/plain")
然后PHP法式入手下手处置依据“$hello”指定的文件,成绩在于“$hello”纷歧定是一个PHP设置的变量,任何近程用户都可以指定它。假如咱们利用上面的体例:
http://vulnhost/vuln.php?hello=/etc/passwd&hello_size=10240&hello_type=text/plain&hello_name=hello.txt
就招致了上面的PHP全局变量(固然POST体例也能够(乃至是Cookie)):
$hello = "/etc/passwd"
$hello_size = 10240
$hello_type = "text/plain"
$hello_name = "hello.txt"
下面的表双数据正好知足了PHP法式所希冀的变量,然而这时候PHP法式不再处置上载的文件,而是处置“/etc/passwd”(凡是会招致内容表露)。这类进击可以用于表露任何敏感文件的内容。
算是1个熟悉的过程,所以c语言的基础有就更好,没有也不怕。

变相怪杰 发表于 2015-2-4 08:04:31

写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。

深爱那片海 发表于 2015-2-8 12:28:39

小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。

老尸 发表于 2015-2-23 09:52:17

遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。

活着的死人 发表于 2015-3-1 21:39:52

Ps:以上纯属原创,如有雷同,纯属巧合

莫相离 发表于 2015-3-11 00:00:46

我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。

精灵巫婆 发表于 2015-3-15 19:56:55

其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。

admin 发表于 2015-3-22 03:10:23

学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。

海妖 发表于 2015-3-26 20:29:07

再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。

柔情似水 发表于 2015-4-3 20:50:00

我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。

谁可相欹 发表于 2015-4-4 03:30:42

小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。

简单生活 发表于 2015-4-29 17:46:02

因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax

仓酷云 发表于 2015-5-4 07:27:42

最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。

爱飞 发表于 2015-5-6 02:11:46

当然这种网站的会员费就几十块钱。

金色的骷髅 发表于 2015-6-4 02:20:04

最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。

不帅 发表于 2015-6-5 03:15:47

实践是检验自己会不会的真理。

小魔女 发表于 2015-6-17 21:11:29

首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。

蒙在股里 发表于 2015-6-26 20:27:09

使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。

分手快乐 发表于 2015-7-12 20:36:09

因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax

再现理想 发表于 2015-7-14 10:36:47

先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
页: [1]
查看完整版本: PHP教程之静态网页PHP法式中文件上传的平安成绩