禁用在控制台中编辑会话存储变量的可能性
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,请记住用户可以将它们更改为他们想要的任何内容,因此不要依赖它们来处理与安全相关的任何事情以上是关于禁用在控制台中编辑会话存储变量的可能性的主要内容,如果未能解决你的问题,请参考以下文章