会话和cookie是否通常被视为输入? 我考虑在PHP中编写的Web应用程序中输入 $$GET和 $POST 。这是因为它们包含用户可以定义的值,这些值随HTTP请求一起“出现”。但是会话和cookie是一样的吗
当我阅读维基百科PHP意大利语页面时,我想到了这个问题,页面上说常见的输入是会话和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
$\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”*]
$\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应用程序中的“输入”是什么?“输入”通常指的是“来自用户的所有东西”,如上面我回答的列表中所示。但“输入”也可能来自文件、服务器端打开的套接字等。。