会话和cookie通常被视为输入吗?

时间:2011-12-19 20:54:29

标签: php input

我认为$_GET$_POST是在用PHP编写的Web应用程序中输入的。这是因为它们包含用户可以定义的值以及与HTTP请求一起“来”的值。但是会话和cookie是一样的吗?

当我阅读维基百科的PHP意大利语页面时,我发现这个问题是常见的输入是$_GET$_POST$_SESSION

4 个答案:

答案 0 :(得分:2)

如果您输入的意思是“请求中的所有内容”(因此,需要验证的内容等),您应该包括:

  • POST / GET vars($_POST$_GET
  • Cookie($_COOKIE
  • 请求路径($_SERVER["REQUEST_URI"]
  • HTTP方法($_SERVER["REQUEST_METHOD"]
  • HTTP标头(通常位于$_SERVER["HTTP_"*]

会话是一种特殊情况,因为所有会话变量都存储在服务器端,即用户无法像使用cookie那样修改它们。无论如何,在客户端保存单个cookie以存储会话ID,可以由用户重置/设置为自定义值。

更新 - 关于$_REQUEST

正如所指出的,在PHP中,您还可以访问$_REQUEST,这是来自$_GET$_POST$_COOKIE的混合变量。 $_REQUEST的确切内容由request_order中的php.ini指令决定。

答案 1 :(得分:1)

$_SESSION仅包含您自己放置的内容。但是,$_COOKIE应被视为不受信任的用户输入以及$_GET, $_POST

我能想到的一点交叉点是最终用户试图通过PHPSESSID提供精心设计的$_COOKIE,以期获得对其他用户会话的访问权。

除非您将其他输入($_GET, $_POST, $_COOKIE)直接存储到$_SESSION,否则可以信任它。

// Oops, $_SESSION['someval'] now holds unfiltered user input!
$_SESSION['someval'] = $_POST['someval'];

答案 2 :(得分:0)

除非您在某个应用程序中创建了此功能,否则用户无法直接输入会话数据;如:

$_SESSION['lastSearch'] = $_GET['search'];

如果您的应用程序确实具有与此类似的功能,或者您不确定;我仍然会过滤/清理您的数据,然后将其打印到页面或在SQL语句中使用它。安全比抱歉更好。

但是,cookie数据可以轻松更改,并被视为直接INPUT。

答案 3 :(得分:0)

php有一个名为$ _REQUEST的全局变量*一个关联数组,默认包含$ _GET,$ _POST和$ _COOKIE *

的内容

$ _REQUEST中的变量通过GET,POST和COOKIE输入机制提供给脚本,因此可以被远程用户修改并且不可信任。

$ _REQUEST中定义的值由用户在浏览器中定义。

浏览器无法修改$ _SESSION中的变量。它们只能通过php修改,通常它们可以被认为是可信任的。