首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP包括二进制安全吗?

PHP包括二进制安全吗?
EN

Stack Overflow用户
提问于 2016-12-20 19:21:44
回答 1查看 303关注 0票数 0

我遇到了一个类似php缓冲区的问题。

代码语言:javascript
运行
复制
ob_start();
header("Content-Type: audio/mpeg");
include "Death_Valley.mp3";
//header("Content-Disposition: attachment; filename='Death_Valley.mp3'");
echo ob_get_clean();

如果我使用file_get_contents而不是包含(这是二进制安全的),我得到了一个错误

解析错误:语法错误,意外的“}”

只是为了自我教育,这真的是非二元安全的问题吗?或者我错过了一些理解包括函数的东西?

EN

回答 1

Stack Overflow用户

发布于 2016-12-20 19:28:10

不,这不是二进制安全。如果遇到字节<=<?<?php,就会破坏下载。

此外,如果黑客能够将自己的文件上传到您的服务器,您将看到远程代码执行漏洞(向mp3文件注入php代码)。Imgur或imageshack因为这个错误而被黑客攻击,一些白痴开发人员认为最好的方法是包含(‘image.jpg’);

做你想做的事的正确方法是

代码语言:javascript
运行
复制
readfile("Death_Valley.mp3");

并删除ob_start(),它将在将文件分发给用户之前将整个文件填充到内存中,这既缓慢又需要内存。

最后的想法是:如果您正在使用apache/lighthttpd/nginx,您可能应该查看X-sendfile (lighthttpd/apache)或X重定向(nginx),这将比任何基于PHP的扩展(至少在Zend的PHP中)都要好得多。也许在HHVM php,idk中并不重要)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41249747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档