- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这个问题是在阅读了其他一些内容之后提出的。
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 重写
关于我的方法的问题是:
$_SERVER['REQUEST_METHOD'];
在要求的 GET
PUT
POST
DELETE
(无论如何我都需要这样做),不过滤输入真的有问题吗?filter_input (INPUT_GET, 'resource');
访问 $_REQUEST['resource'];
?当这将仅用于确定资源,而无法确定资源时(比如有人试图添加恶意代码),我们将根本找不到资源并返回 404 Not Found
状态。 我意识到,对于仅被视为警告的内容,这似乎很令人担忧,但是,根据我的经验,仅修复错误会给您工作代码,但修复警告将帮助您理解代码工作的原因。
最佳答案
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/
首先,我是一名法国学生,请原谅我的英语不好水平。 我们目前正在开发 Web 服务器 (C++),我必须开发 CGI 执行部分,更确切地说:PHP CGI 部分。 当用户询问我们服务器上的 .php 页
概述 想做一个微信的公众平台,阅读了微信官方给的网址接入的示例代码,发现有个问题好像一直都是半知半解的,就是在类里边直接使用$_GET。仔细查了下关于这方面的知识,发现PHP中这部分的基础知识掌握
我目前正在开发一个 PHP 网站。我正在尝试设置一个将存储用户 ID 的 cookie。这是一个登录系统,我需要用户 ID 才能将其添加到 MySQL 数据库中的不同表中。 当用户成功登录时,它会创建
我想为 Session 和 Request 创建一个包装器,这样我就不必直接访问 PHP superglobals。我意识到,如果我为超全局变量创建一个包装器并使用它们,那么对我的应用程序进行单元测试
我刚刚将我的 IDE (Netbean) 升级到 1.7.4 测试版,以对其进行测试......现在似乎每当我访问我的超全局变量时它都会给我一个警告。它说 Do not access supergol
有没有办法创建/定义一个对所有 php 文件可用的变量(比如 superglobals) Example: i define a variable in file1.php $car = ferrar
我用 C++ 编写了一个 PHP 扩展库。我正在为上面的 PHP 5.x 广告编写扩展。 我需要在我的 C++ 代码中访问 PHP superglobals。有谁知道如何做到这一点?。将不胜感激指向类
所以,我并没有深厚的 PHP 背景——我想知道在格式良好的代码中,是否应该直接使用“superglobals”,例如在某些函数的中间说 $_SESSION['x'] = 'y'; 或者,如果像我通常对
有什么方法可以在 php 中将键添加到 superglobals 而无需为这些键定义相应的值? 例如: $_SESSION['key']='set';//key` 自动定义。 但是我想做这样的事情 a
当我使用 $ _POST , $ _GET , $ _SERVER ,...时,我在PHP的Netbeans 7.4上收到此消息警告。 Do not Access Superglobal $_POST
我正在使用 CodeIgniter 3 和 Bootstrap 开发一个注册和登录应用程序。 在我的“用户”表中,我有一个“事件”列,它可以将0 或1 作为值。 我希望能够通过单击我的用户 View
我真的很讨厌全局变量——也许是因为我是 C# 程序员,但是当我在 PHP 中工作时,每次我不得不做这样的事情时我都会咬紧牙关: $strUsername = $_GET['username']; 是的
这个问题是在阅读了其他一些内容之后提出的。 Do not access superglobal $_GET array directly “Do not Access Superglobal $_SE
是的,发布了一个类似的问题并正确回答了。 Warning "Do not Access Superglobal $_POST Array Directly" on Netbeans 7.4 for P
我在使用 $_POST、$_GET、$_SERVER 时在 Netbeans 7.4 for PHP 上收到此消息警告, .... Do not Access Superglobal $_POST A
我是一名优秀的程序员,十分优秀!