Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 防止标头插入的编码_Php_Header Injection - Fatal编程技术网

Php 防止标头插入的编码

Php 防止标头插入的编码,php,header-injection,Php,Header Injection,我有一个变量$filename,应该被视为用户输入 我在以下内容中使用此$filename: header('Content-Disposition:inline;filename=“.$filename.”) 即使在包含有效负载的情况下,如何对其进行编码以使$filename安全 编辑:根据我目前所能找到的,以及OWASP提供的,我可能只需要过滤所有换行符和换行符?寻找确认或其他信息。这些是唯一的要求,以下应足够: preg_replace('/[\f\r\n]/', '', $filenam

我有一个变量
$filename
,应该被视为用户输入

我在以下内容中使用此
$filename

header('Content-Disposition:inline;filename=“.$filename.”)

即使在包含有效负载的情况下,如何对其进行编码以使
$filename
安全

编辑:根据我目前所能找到的,以及OWASP提供的,我可能只需要过滤所有换行符和换行符?寻找确认或其他信息。这些是唯一的要求,以下应足够:

preg_replace('/[\f\r\n]/', '', $filename);

编辑:对于这个问题,假设已经执行了验证,但是有效负载已经通过了验证,并且没有被拒绝。

理想情况下,您应该预先检查文件名,如果文件名不符合规范,您将直接拒绝它并使请求失败。不太理想的情况是从字符串中删除CR/LF字符。请验证它是否有新行,和/或将空格替换为空格、
-
\uu
等,除非您正在制作一个文件管理器,用户在其中进行身份验证,否则您应该进行限制filenames@Sammitch不会
preg_replace()
是否首选匹配所述字符?您的评论是否确认了这是所有必要的?此RFC可能会给您一些提示:。还有这个:您还可以检查处理HTTP头的流行项目,例如: