我遇到像这样的php缓冲区的问题
ob_start();
header("Content-Type: audio/mpeg");
include "Death_Valley.mp3";
//header("Content-Disposition: attachment; filename='Death_Valley.mp3'");
echo ob_get_clean();
如果我使用 include 而不是 file_get_contents (这是二进制安全的)我收到了错误
解析错误:语法错误,意外'}'
仅仅为了自我教育,它真的是非二元安全问题吗? 或者我错过了一些理解包含功能的东西?
答案 0 :(得分:3)
<=
或<?
或<?php
,则会损坏下载。
此外,如果黑客能够将自己的文件上传到您的服务器,您就会查看远程执行代码漏洞(将php代码注入mp3文件。由于这个错误,Imgur或imageshack被黑了,有些白痴开发者决定最好的方法是包括(&#39; image.jpg&#39;);)
正确的做法是
readfile("Death_Valley.mp3");
并删除ob_start(),它会将整个文件填入内存,然后再将其发送给用户,这既缓慢又耗尽内存
最后的想法:如果你正在使用apache / lighthttpd / nginx,你应该查看X-sendfile(lighthttpd / apache)或X-Accel-Redirect(nginx),这比任何东西都要好得多。基于php(至少在Zend的PHP中。也许它在HHVM php,idk中并不重要)