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头的流行项目,例如: