php - "Do not Access Superglobal $_REQUEST Array Directly."Netbeans 8.0 PHP

标签 php netbeans

这个问题是在阅读了其他一些内容之后提出的。

Do not access superglobal $_GET array directly

“Do not Access Superglobal $_SERVER Array Directly” on Netbeans 7.4 for PHP

Why is filter_input() incomplete?

我已经加载了最新版本 Netbeans 8.0 并且我看到了一个警告

Do not Access Superglobal $_REQUEST Array Directly.

太好了,当我在做一些可以改进的事情时,我很高兴被展示,所以我查看了提示

这个建议很简单。

Use some filtering functions instead (e.g. filter_input(), conditions with is_*() functions, etc.).

所以我开始研究 fliter_input() 但是它还没有为 $_REQUEST 实现。这似乎有点死胡同。

然后我从 (@bobince) 那里读到了一些很有帮助的东西“在你的脚本开始时过滤时,你不知道你的输入将在哪里结束,所以你不知道'不知道如何逃避它。"

它提醒我,我确切地知道我的输入将在哪里结束,以及它的确切用途。所以,我想问大家,我将要采用的方法本质上是否安全

我正在设计一个 REST-ish API,我正在使用 $_SERVER['REQUEST_METHOD']; 来确定需要返回的资源。我也在使用 $_REQUEST['resource'];,它应该包含 /api/ 之后 之后的 URI 上的所有内容。 htaccess 重写

关于我的方法的问题是:

  1. 如果我总是验证 $_SERVER['REQUEST_METHOD']; 在要求的 GET PUT POST DELETE(无论如何我都需要这样做),不过滤输入真的有问题吗?
  2. 我是否应该使用 filter_input (INPUT_GET, 'resource'); 访问 $_REQUEST['resource'];?当这将仅用于确定资源,而无法确定资源时(比如有人试图添加恶意代码),我们将根本找不到资源并返回 404 Not Found 状态。
  3. 我是否需要考虑任何其他注意事项?我是否遗漏了我理解中的任何重要内容?

我意识到,对于仅被视为警告的内容,这似乎很令人担忧,但是,根据我的经验,仅修复错误会给您工作代码,但修复警告将帮助您理解代码工作的原因

最佳答案

So I start looking into fliter_input() however it is not yet implemented for $_REQUEST. This seems like a little bit of a dead end.

我会说这不是死胡同,而是故意的。 filter_input()要求您明确指定输入类型。 $_REQUEST 不清楚,它包含来自各种来源的输入,允许一个来源覆盖另一个来源。

除此之外,这也不是警告想要告诉您的内容。将像 $_GET 这样的超全局函数与像 filter_input(INPUT_GET, ...) 这样的超全局函数进行交换显示了相同的设计缺陷。但是 Netbeans 无法就此轻易地向您发出警告。

摆脱超全局变量已经是个好主意。

相反,将输入数据注入(inject)到您的应用程序的低层位置,例如引导请求信息,不要在其余代码中使用任何超全局变量或 filter_input 函数。

这将使您能够轻松模拟任何请求方法,甚至无需实际请求。

关于php - "Do not Access Superglobal $_REQUEST Array Directly."Netbeans 8.0 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23331094/

相关文章:

php - 是否可以在选择值后添加添加数字?

javascript - 复选框值无法使用 AJAX 正确发送到 PHP

javascript - 当使用 ajax 调用渲染表单时,客户端验证在 Yii2 中不起作用

c++ - 如何在Netbeans中启用C++ 17?

java - 基本Scanner用法中的java.util.NoSuchElementException

php - 如何在php中检测海豚浏览器?

php - 为什么 CakePHP 会复制我的查询? (这与通常被问到的 "too many queries"问题不同)

java - 一些功能没有按预期工作

java - 如果输入有效,如何处理读取三角形三边并计算面积的家庭作业程序?

git - 更改 NetBeans 使用的 Git 远程密码