在当前形式中,检查文件上传是否已启用(否则它不可能是上传的文件),以及提供的文件名实际上是由PHP生成的(我从查看源代码中知道这一点)。is_uploaded_file
这并不是很有帮助,因为如果在上传过程中没有问题,那么
is_uploaded_file($_FILES['blah']['tmp_name'])
总是会回来。true
但是,考虑到自 PHP 4.1.0 以来“仅”可用,而在 PHP 4.0.3 中首先出现。这里似乎合乎逻辑的结论是,在_FILES美元的
超级全球可用之前,很难让上传的文件处理安全地工作。如果不出意外的话,非超全局变量可以被注入到其中,而且很容易被启用——这曾经是PHP安全性的另一个痛点。$_FILES
is_uploaded_file
register_globals
如果一个人今天正在编写代码并使用应该使用的方式,那么我会说在当前的实现中是“无用的”,因为没有攻击向量可以诱使你处理“坏”文件。$_FILES
is_uploaded_file
但是,还有另一种看待事物的方式:只要它可用,就可以保证现在和将来都能正常工作,无论上传文件并将其提供给程序员的机制是什么。也许现在它没有提供任何具体的东西,但它是对“安全文件上传”概念的抽象,带有保证。我认为没有这样的保证(再次,即使如果目前的现状“变得更糟”,我会认为这是一种倒退)。is_uploaded_file
$_FILES