gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 22:16:13 28 4
gpt4 key购买 nike

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

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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com