我认为$_GET
和$_POST
是在用PHP编写的Web应用程序中输入的。这是因为它们包含用户可以定义的值以及与HTTP请求一起“来”的值。但是会话和cookie是一样的吗?
当我阅读维基百科的PHP意大利语页面时,我发现这个问题是常见的输入是$_GET
,$_POST
和$_SESSION
。
答案 0 :(得分:2)
如果您输入的意思是“请求中的所有内容”(因此,需要验证的内容等),您应该包括:
$_POST
,$_GET
)$_COOKIE
)$_SERVER["REQUEST_URI"]
)$_SERVER["REQUEST_METHOD"]
)$_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修改,通常它们可以被认为是可信任的。