Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 会话变量($\u session)是否需要任何类型的清理_Php_Session_User Experience - Fatal编程技术网

Php 会话变量($\u session)是否需要任何类型的清理

Php 会话变量($\u session)是否需要任何类型的清理,php,session,user-experience,Php,Session,User Experience,我有一个注册表单可以正常工作,但最近有人向我指出,这对用户体验来说是一个坏习惯,例如,如果一个帐户已经存在,我会将用户重定向回注册页面,而不会重新填充他填写的表单,只会显示一条错误消息 因此,我很快想出了一个很好的方法来解决这个问题,如果在初始注册数据签出并且相应电子邮件的帐户已经存在之后,我可以创建一个存储$\u POST数据的$\u会话,并在重新填充用户表单后销毁它 现在我的问题是:$\u会话变量是否容易受到任何类型的攻击,或者我可以继续将原始输入数据存储在$\u会话中,并在重新填充表单时使

我有一个注册表单可以正常工作,但最近有人向我指出,这对用户体验来说是一个坏习惯,例如,如果一个帐户已经存在,我会将用户重定向回注册页面,而不会重新填充他填写的表单,只会显示一条错误消息

因此,我很快想出了一个很好的方法来解决这个问题,如果在初始注册数据签出并且相应电子邮件的帐户已经存在之后,我可以创建一个存储$\u POST数据的$\u会话,并在重新填充用户表单后销毁它


现在我的问题是:$\u会话变量是否容易受到任何类型的攻击,或者我可以继续将原始输入数据存储在$\u会话中,并在重新填充表单时使用htmlspecialchars()对其进行转义?

很难说清楚。但我大约100%肯定答案是否定的,因为他们并不真正脆弱。这是假设您几乎可以立即销毁会话。在本例中,您将创建会话,将用户重定向回旧页面,检查会话变量,将变量设置在正确的位置(在本例中,您只需使用纯文本即可),然后销毁会话。会话将仅在约10秒钟内处于活动状态。。最多一分钟?没有人真的有足够的时间从服务器上拉。如果他们已经在收听交通信息,那么今年你的麻烦就更大了

因为太长了,我不得不移动来回答


不过,在用户提交之前,您可以使用ajax检查用户名。那会更好。如果电子邮件已经存在,则不允许他们提交。只需根据
keyup
或其他内容提交即可。

很难说清楚。但我大约100%肯定答案是否定的,因为他们并不真正脆弱。这是假设您几乎可以立即销毁会话。在本例中,您将创建会话,将用户重定向回旧页面,检查会话变量,将变量设置在正确的位置(在本例中,您只需使用纯文本即可),然后销毁会话。会话将仅在约10秒钟内处于活动状态。。最多一分钟?没有人真的有足够的时间从服务器上拉。如果他们已经在收听交通信息,那么今年你的麻烦就更大了

因为太长了,我不得不移动来回答


不过,在用户提交之前,您可以使用ajax检查用户名。那会更好。如果电子邮件已经存在,则不允许他们提交。只需根据
keyup
或其他内容提交即可。

否,会话变量通过多种选项存储在服务器上,如保存到磁盘、通过redis或memcached存储共享等

即使这些数据被泄露,我也不知道卫生设施如何保护任何东西或减轻这种攻击的负面影响


如果您真的担心这样的事情,您可以在使用temp会话变量之后销毁它。

否,会话变量通过多种选项存储在服务器上,例如保存到磁盘、通过redis或memcached存储共享等等

即使这些数据被泄露,我也不知道卫生设施如何保护任何东西或减轻这种攻击的负面影响


如果您真的担心这样的事情,您可以在使用temp会话变量之后销毁它。

会话中的变量不易受到会话中的攻击。然而,在其他地方使用这些变量可能会打开漏洞。例如,在会话中放置get/post变量并不意味着可以神奇地直接在查询中使用它。它仍然可能导致SQL注入问题。当考虑类似的事情时,你必须考虑数据的来源。如果它从某种用户输入开始,就认为它是脏的。< /P>
唯一可能出现问题的地方是,如果发送的数据非常大,而您只是盲目地分配
$\u SESSION['POST']=$\u POST。不应该有溢出之类的问题。问题更多的是,php必须在请求开始时取消序列化数据,然后在请求结束时重新序列化(通常只有在发生更改时)。这种非序列化/序列化需要时间(可能很快,但仍然如此)。我建议只分配要保存的值。

会话中的变量不易受到会话中的攻击。然而,在其他地方使用这些变量可能会打开漏洞。例如,在会话中放置get/post变量并不意味着可以神奇地直接在查询中使用它。它仍然可能导致SQL注入问题。当考虑类似的事情时,你必须考虑数据的来源。如果它从某种用户输入开始,就认为它是脏的。< /P>
唯一可能出现问题的地方是,如果发送的数据非常大,而您只是盲目地分配
$\u SESSION['POST']=$\u POST。不应该有溢出之类的问题。问题更多的是,php必须在请求开始时取消序列化数据,然后在请求结束时重新序列化(通常只有在发生更改时)。这种非序列化/序列化需要时间(可能很快,但仍然如此)。我建议只分配要保存的值。

您可以始终使用
mysqli\u real\u escape\u string()
进行一些基本的清理。值得注意的是,
$\u SESSION
变量通常保存在磁盘上,当然容易受到权限设置错误的影响。因此,最好不要记住任何敏感信息,如密码。不要直接做
$\u SESSION[“foo”]=$\u POST
因为您有可能从恶意用户那里获得任意大的会话文件/变量。@Anonymous.X在您将它们存储到dat之前,没有必要这样做