【问题标题】:Using $_SESSION["attribute"] in javascript在 javascript 中使用 $_SESSION["attribute"]
【发布时间】:2013-11-19 22:06:14
【问题描述】:

从安全的角度来看,用javascript写这个可以吗?

var u = <?php echo $_SESSION["username"]; ?>;

(背景):
如果我在 PHP 中使用 ajax 在后台更改密码脚本中使用它,并且我想在 PHP 页面中使用这部分代码,则有一个带有 oldpasswordnewpasswordnewpasswordcheck 的表单,用户是登录并在$_SESSION["username"] 有一个登录用户的昵称,为了更改密码,我需要新旧密码,我需要输入表单输入和执行$_SESSION["username"] 中代码的用户的用户名@ 给我们带来到我的代码行。

所以问题是是否可以将该会话值回显到我的 javascript 变量中?

【问题讨论】:

  • 如果用户名对您的系统不敏感,那么可能没有问题
  • 你错过了 echo... var u =
  • @Gavin 实际上是的,还有 ;最后,编辑了问题,但它的意思是回声。

标签: javascript php ajax security change-password


【解决方案1】:

如果我理解正确的话,完全没有必要这样做。它的会议是有原因的。如果用户在提交表单时需要更改他/她的密码,您可以在PHP中获取当前登录的用户,从而消除用户名的暴露(即使只是用户名)。

如果您因为使用 AJAX 而感到困惑,那么您仍然可以访问当前登录的用户,因为该用户的浏览器/客户端仍在执行请求,从而传递 cookie 来识别会话。

您似乎使此过程过于复杂,如果我误解了,请见谅。

【讨论】:

    【解决方案2】:

    只有当$_SESSION['username'] 是一个数字时才有效,几乎可以肯定它不是。

    var u = <?=json_encode($_SESSION['username'])?>;
    

    json_encode 可以安全地转储到 js 中。

    【讨论】:

    • 你的意思可能是这个 var u = ;你呢?
    • 好吧,它不是数字,但为什么它不适用于非数字内容?
    • 使用&lt;?=&lt;?php echo相同,只是简写语法。
    • 为什么不起作用? var u = herp a derp; 对您来说是否像有效的 JavaScript?
    • @NiettheDarkAbsol 所以 json_encode 将从你的 var u = herp 中生成 derp;这个:var u = "herp a derp"; ?
    猜你喜欢
    • 2011-04-24
    • 1970-01-01
    • 2014-04-04
    • 2017-12-12
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 2013-05-15
    相关资源
    最近更新 更多