会话和cookie是否通常被视为输入? 我考虑在PHP中编写的Web应用程序中输入 $$GET和 $POST 。这是因为它们包含用户可以定义的值,这些值随HTTP请求一起“出现”。但是会话和cookie是一样的吗

会话和cookie是否通常被视为输入? 我考虑在PHP中编写的Web应用程序中输入 $$GET和 $POST 。这是因为它们包含用户可以定义的值,这些值随HTTP请求一起“出现”。但是会话和cookie是一样的吗,php,input,Php,Input,当我阅读维基百科PHP意大利语页面时,我想到了这个问题,页面上说常见的输入是$\u GET,$\u POST和$\u SESSION $\u会话只包含您自己放在那里的内容$\u COOKIE应与$\u GET,$\u POST一起被视为不受信任的用户输入 我能想到的一个交叉点是,最终用户试图通过$\u COOKIE提供精心编制的PHPSESSID,以期获得对另一用户会话的访问 除非您直接将其他输入($\u GET,$\u POST,$\u COOKIE)存储到$\u会话,否则它是可信的 // O

当我阅读维基百科PHP意大利语页面时,我想到了这个问题,页面上说常见的输入是
$\u GET
$\u POST
$\u SESSION

$\u会话
只包含您自己放在那里的内容<但是,代码>$\u COOKIE应与
$\u GET,$\u POST
一起被视为不受信任的用户输入

我能想到的一个交叉点是,最终用户试图通过
$\u COOKIE
提供精心编制的
PHPSESSID
,以期获得对另一用户会话的访问

除非您直接将其他输入
($\u GET,$\u POST,$\u COOKIE)
存储到
$\u会话
,否则它是可信的

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

用户不能直接输入会话数据,除非您在应用程序的某个地方创建了此功能;例如:

$_SESSION['lastSearch'] = $_GET['search'];
如果您的应用程序确实具有类似的功能,或者您不确定;我仍然会过滤/清理您的数据,以便将其打印到页面或在SQL语句中使用。安全总比后悔好

但是,cookie数据可以很容易地更改,并被视为直接输入。

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

  • POST/GET变量(
    $\u POST
    $\u GET
  • COOKIE(
    $\u COOKIE
  • 请求路径(
    $\u服务器[“请求URI”]
  • HTTP方法(
    $\u服务器[“请求\u方法”]
  • HTTP头(通常在
    $\u服务器[“HTTP”*]
    中)
会话是一种特殊情况,因为所有会话变量都存储在服务器端,即用户不能像使用cookie那样修改它们。无论如何,在客户端保存一个cookie来存储会话ID,用户可以将会话ID重置/设置为自定义值

更新-关于
$\u请求
如前所述,在PHP中,您还可以访问
$\u REQUEST
,这是来自
$\u GET
$\u POST
$\u COOKIE
的变量组合。
$\u REQUEST
的确切内容由
php.ini

中的
REQUEST\u order
指令确定。php有一个名为$\u REQUEST*的全局变量,该变量是一个关联数组,默认情况下包含$\u GET、$\u POST和$\u COOKIE的内容*

$\u请求中的变量通过GET、POST和COOKIE输入机制提供给脚本,因此远程用户可以对其进行修改,并且不可信

// Oops, $_SESSION['someval'] now holds unfiltered user input!
$_SESSION['someval'] = $_POST['someval'];
$\请求中定义的值由用户在浏览器中定义


浏览器无法修改$\u会话中的变量。它们只被php修改,通常可以认为是可信的。

我觉得这样更好,我不喜欢说“输入”。我认为它更好地表示为请求。我会把页面添加到那个答案。是的,请求是GET + POST + COOKIE的组合。你认为Web应用程序中的“输入”是什么?“输入”通常指的是“来自用户的所有东西”,如上面我回答的列表中所示。但“输入”也可能来自文件、服务器端打开的套接字等。。