【发布时间】:2014-12-30 18:39:31
【问题描述】:
我有一个可以正常工作的注册表单,但最近有人向我指出这对 UX 来说是一个坏习惯,例如,如果一个帐户已经存在,我将用户重定向回注册页面,无需重新填写他填写的表格,仅显示错误消息。
所以我很快想出了一个很好的方法来解决这个问题,如果在初始注册数据签出并且相应电子邮件的帐户已经存在,我可以创建一个 $_SESSION 来存储 $_POST 数据,然后销毁重新填充用户的表单后。
现在我的问题是:$_SESSION 变量是否容易受到任何类型的攻击,或者我可以继续将原始输入数据存储在 $_SESSION 中,并在重新填充表单时使用 htmlspecialchars() 对其进行转义?
【问题讨论】:
-
您可以随时使用
mysqli_real_escape_string()进行一些基本的清理 -
值得注意的是,
$_SESSION变量通常保存在磁盘上,当然容易受到错误设置权限的影响。因此,最好不要记住密码等任何敏感信息。不要直接使用$_SESSION["foo"] = $_POST;,因为您可能会从恶意用户那里获得任意巨大的会话文件/变量。 -
@Anonymous.X 在将它们存储在数据库中之前,无需这样做。将该功能用于其他任何事情都超出了其预期目的。
-
@KevinMark,我实际上的意思是我只会存储 $_POST 数据的某些元素,不愿意使用
$_SESSION['foo'] = $_POST;,正如你所说,我不想在其中保存任何敏感信息会议。 -
@Anonymous.X 清理数据始终是一种好习惯,但
mysqli_real_escape_string()只是清理将直接添加到 MySQL 查询的数据的正确方法。使用该功能对包括 HTML 在内的任何其他内容进行清理是不正确的。
标签: php session user-experience