根据我在网上看到的,为防止空字节攻击,我应该在所有用户输入上使用以下内容:
$data = str_replace(chr(0), '', $data);
对我有意义。但是,如何在用户通过表单上传的图像上执行此操作?我没有太多处理这类图像的经验。
我假设你不能这样做:
$_FILES['pic']['tmp_name'] = str_replace(chr(0), '', $_FILES['pic']['tmp_name']);
答案 0 :(得分:1)
正如评论中所提到的,PHP不再容易受到这种攻击。尝试打开名称包含空字节的文件现在将失败,而不是打开意外文件。
即使在易受此攻击的PHP版本中,上传文件也无需过滤。用于上传文件的临时文件名由PHP内部生成,并且不包含空字节或任何其他"令人惊讶的"特殊字符,例如空格。