PHP include() 替代方案?

标签 php include

我想知道我的代码是否安全以及是否有其他更安全的替代方法来包含外部文件..

所以这是我的代码示例,它安全吗?我怎样才能让它更安全?谢谢!

<?php switch($_GET['p']){
   case 'test1':
      include 'test1.php';
      break;
   case 'test2':
      include 'test2.php';
      break;
   case 'test':
                echo 'something';
      include 'pages/test.php';
                echo 'something';
      break;
   default: 
      include 'main.php';
      break; 
} ?>

最佳答案

你的代码没问题。由于文件名是硬编码的,因此有条件地包含文件没有问题,就像您正在做的那样。当包含的文件基于用户未净化的值时,会出现此问题。例如

include $_GET['p'];

可以包含用户想要的任何内容(根据 PHP 设置,它还可以包含其他域中的文件)

其他选项是你正在做的事情的变体

如果文件不存在,

requirerequire_once 将失败。 inlucde_oncerequire_once 确保文件只包含一次,因此如果该文件已包含在程序的其他地方,则不会包含。

include_once 'myfile.php';
include_once 'myfile.php'; //does nothing as the file is already included

如果你有使用类,还有autoloader的选项.从您的应用程序的外观来看,您必须重新构建它才能使用它。

关于PHP include() 替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2617556/

相关文章:

php - pg_query() - “无法将连接设置为阻塞模式(错误号 8)

c++ - XCode 不会破坏 #include 的 CPP 文件

c# - 我的 ANTLR 解析器(不是词法分析器)如何触发词法 "include"(不是 AST 拼接)?

C:如果已经定义,则忽略函数的第二个定义

PHPUnit , PEAR 升级错误

php - 可能的 ? : mysql row to an if condition

PHP:checkbox-isset 总是返回 true

javascript - 如何从表单调用外部 javascript 方法?

c++ - 将 GDAL 合并到 MSVS 2008 C++ 项目中

php - yii2 Google OAuth 成功重定向到 404