禁用在控制台中编辑会话存储变量的可能性

Posted

技术标签:

【中文标题】禁用在控制台中编辑会话存储变量的可能性【英文标题】:Disable possibility to edit sessionstorage variable in console 【发布时间】:2016-02-01 17:43:22 【问题描述】:

所以,我正在创建这个网站,当用户像这样成功登录时,将会话存储变量“logedIn”设置为 true:

sessionStorage.setItem('logedIn', 'true')

该变量在其他网页上用于在显示内容之前查看用户是否已登录,以便未登录的用户无法访问该网页。它就像一个魅力,但我注意到,如果我在 google chrome 控制台中手动输入代码,我可以轻松更改会话变量。这显然是不想要的。

我的问题是:我该如何解决这个问题?

PS:我不使用php会话变量的原因是因为登录过程是用javascript完成的。当登录按钮被按下时,ajax 将给定的凭据发送到一个 php 脚本,该脚本会检查数据库。如果成功,它会将代码发送回 ajax 完成函数,该函数设置变量。如果您有更好的方法来做我需要做的事情,非常欢迎您;)

谢谢,芝诺

【问题讨论】:

你控制验证登录的php脚本吗?只需在其中设置 $_SESSION ['loggedIn'] = 'yup'; 并检查它是否在每个 php 脚本上设置。你不应该在 JS 中做那种检查 好的,我会的,感谢您的快速响应! 【参考方案1】:

你不能,而且不安全。在 AJAX 结果之后,您应该设置 cookie 并在服务器端的每个页面上验证它们。

【讨论】:

所以我也不能使用php会话? 你可以。使用 sessions 或您自己的基于 cookie 的系统。 还有一个问题,我可以在 php 文件中设置变量来检查数据库中是否有给定的凭据,否则会不会工作/不安全? 例如:您的数据库包含 id、用户名、密码、会话等列,每次用户登录时,您都将会话和 cookie's 值更改为随机字符串。当有人加载页面时,您正在执行简单查询以选择存储字符串的行。 如果您使用 cookie,请记住用户可以将它们更改为他们想要的任何内容,因此不要依赖它们来处理与安全相关的任何事情

以上是关于禁用在控制台中编辑会话存储变量的可能性的主要内容,如果未能解决你的问题,请参考以下文章

Grails:在用户会话期间存储数据的最佳方法[关闭]

基于PHP Memcache(d)的会话:是否应禁用垃圾收集?

将数据库连接存储在会话变量中[重复]

Session(会话控制)

在mysql中存储会话

会话控制