转义有效的文件名/路径

时间:2012-10-02 13:01:32

标签: php security file escaping

所以我现在遇到安全问题,我想知道什么是使脚本安全的完美方法。我的代码中有一个

$AdditionalPath = preg_replace("/^[A-Za-z0-9._-\/\\]/","",$AdditionalPath);
require $AdditionalPath."../xdata/php/website_config/mysql.php";

$AdditionalPath可能是一切,甚至是恶意代码,所以我很难自己,我应该让某些字符进入该变量,例如A-Z a-z 0-9 {{ 1}} . /。我是对的?我也正确地制作了这个正则表达式吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

为什么不使用realpath而不是正则表达式:

$file = realpath( $AdditionalPath . "../xdata/php/website_config/mysql.php");
if( is_readable( $file ))
  require $file;

<强>更新

来自realpath的文档:

  

注意:正在运行的脚本必须具有可执行权限   层次结构中的目录,否则realpath()将返回FALSE。