php - 在包括使用is_file的文件中,安全性

  显示原文与译文双语对照的内容
0 0

我在of学习了很多,这是我最喜欢的编程网站,在这里我找到了许多问题的答案。 现在,我已经完成了代码,我需要知道: 它有安全漏洞?

它需要从url获取域名,以查看包含该表达式的var文件是否存在于目录中并输出内容。 感谢你的帮助 !

如果我使用htmlspecialchars和preg_replace清理HTTP_HOST就足够了? 使用strip_tags将是多余的,不? 从 array 中删除那些特殊字符也是多余的,你不觉得?

编辑:

修改代码并向包含文件本身添加保护。 非常感谢!

时间: 原作者:

0 0

否你应该使用允许表达式的白色列表。 你绝对不需要依赖黑色列表和简单的消毒。

你还将硬编码包含你的PHP文件的目录。

0 0

假设你将所有的*var.php 文件放在一个特殊目录中,你可以将它们读入一个,并将所选内容限制在该 array的边界内,而不是仅限于 is_file():


$vardir='/var/www/include/vars/';
$varfiles=array();
foreach(scandir($vardir) as $fn)
 if(($fn!='.')&&($fn!='..'))
 $varfiles[]="$vardir$fn";

/* Next, do whatever sanitizing you see fit */

if(array_find($fnvar)) include_once $fnvar;

注意,这实际上是 whitelist,在评论中提到了 whitelist: 如果在 $vardir 目录中新建 {xyz}var.php,实际上是在白名单中插入一个新条目。

因这里,如同 @ack__ 指出的那样,你无法避免一种白名单或者另一种方法。

...