php - 将 "require"与 GET/POST 数据一起使用是否安全?

标签 php security

使用下面的代码是否安全:

require($_SERVER['DOCUMENT_ROOT'] . "/pages/" . $_GET['page'] . ".php") 

最佳答案

不,它不安全。为什么?

因为两个点的序列 /../ 意味着一个目录返回并且攻击者可能包含您系统上的任何内容,甚至高于 $_SERVER['DOCUMENT_ROOT'] . (在一个不幸的配置中,这意味着 secret /敏感的操作系统配置文件。)

您必须使用 IF 或 SWITCH 来获取允许的值以防止恶意输入。示例:

switch($_GET['page']) {
     case 'welcome': $page='welcome';
     case 'shop': $page='shop';
     default: $page='index';
}
require($_SERVER['DOCUMENT_ROOT'] . "/pages/" . $page . ".php")

另请查看 in_array() 以便更轻松地进行过滤。

关于php - 将 "require"与 GET/POST 数据一起使用是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11676837/

相关文章:

php - 如果可能,如何使用 PHP 从外部网站获取数据(文本)?

php - 如何通过表单上的提交按钮传递参数

Java 错误 : "Your security settings have blocked a local application from running"

Java:如何从 IE 浏览器访问 Window 凭据

php - Laravel 使用集合对重复的表条目进行分组

php - 终止 php 中数据库例程(重复)工作的最佳方法是什么

php - 下拉框中的空格和重复

javascript - 确保远程 ajax 方法调用的安全

security - cakePHP 安全性

c# - 全屏WPF应用程序充当操作系统