当前位置: 首页 > 面试题库 >

PHP会话变量的安全性如何?

蓬琦
2023-03-14
问题内容

我有一个登录脚本,可以根据“用户”表中的数据验证用户名/密码。此外,我有一个“角色”表,用于指定给定用户的访问级别。假设我使用的是安全的登录脚本,那么在成功登录后仅对“角色”表执行附加查询以发现用户的授权级别并将其存储到会话变量中,是否存在安全漏洞?这样的想法是,在具有混合权限的任何页面上,我都可以简单地查询会话变量以发现已登录用户的授权级别。

谢谢。


问题答案:

会话比cookie更为安全。但是仍然有可能窃取会话,因此黑客将完全有权访问该会话中的任何内容。避免这种情况的一些方法是IP
Checking(效果很好,但是fi值很低,因此本身不可靠),并使用随机数。通常,对于一个随机数,您每页都有一个“令牌”,以便每个页面都检查最后一页的随机数与它存储的内容是否匹配。

在任一安全检查中,都将失去可用性。如果您进行IP检查,并且用户位于内部网防火墙(或引起此情况的任何其他情况)的后面,而该防火墙无法为该用户保留稳定的IP,则他们每次丢失IP时都必须重新进行身份验证。使用随机数,您将获得总是很有趣的“单击将导致此页面中断”的情况。

但是,有了Cookie,黑客可以使用相当简单的XSS技术简单地窃取会话。如果您将用户的会话ID存储为cookie,那么他们也容易受到此攻击。因此,即使会话仅对可以进行服务器级黑客攻击的用户(如果您的服务器是安全的,它需要更复杂的方法,并且通常需要一定数量的特权)才有意义,您仍然需要进行额外的验证级别根据每个脚本请求。您不应该将cookie和AJAX一起使用,因为如果cookie被盗,这将使它更容易完全进入城镇,因为您的ajax请求可能无法对每个请求进行安全检查。例如,如果页面使用随机数,但从未重新加载页面,则脚本可能仅在检查该匹配项。如果Cookie保留了身份验证方法,



 类似资料:
  • 问题内容: 已锁定 。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 用PHP维护负责的会话安全性有哪些准则?网络上到处都有信息,现在是时候将它们全部集中在一个地方了! 问题答案: 为了确保会话安全,需要执行以下几项操作: 对用户进行身份验证或执行敏感操作时,请使用SSL。 只要安全级别发生更改(例如登录),就重新生成会话ID。如果愿意,您甚至可以为每个请求

  • 问题内容: 在我的网站上,我有一个名为的变量,其中包含来自表单的输入。然后,我在用户页面上显示此变量(通过echo)。 使用此变量来避免任何安全风险的最佳方法是什么?我使用,但这还不够。 此变量也将保存到MySQL数据库。 问题答案: 为避免严重的安全问题,必须执行两项非常重要的操作。 您需要先对用户输入进行转义,然后再将其放入SQL查询中。转义表示转义所有特殊字符,如; 幸运的是,有一个函数已经

  • 问题内容: 如果我在flask中具有全局变量,并且有多个用户一次访问该站点,那么一个人会话可以覆盖另一个人会话的全局变量,还是在用户每次请求烧瓶时,flask都会创建我的站点和程序代码的唯一实例浏览器? 问题答案: 一般来说,全局变量在请求之间共享。 某些WSGI服务器可以为每个请求使用新的单独流程,但这不是扩展请求的有效方法。大多数将使用踩踏或几个子进程来分散负载,但是即使在单独的子进程的情况下

  • 我想设置会话点击链接,所以登录后,用户将重定向到上次访问的页面。 例如: 步骤1:用户打开主页。(seesion url设置为主页 第二步:下一步在新选项卡中,用户将打开联系人页面(再次会话变量重置) 第三步:用户进入首页,点击登录链接。(因为没有重新加载页面,所以没有设置会话) 第四步:登录后,用户将重定向到联系人页面。 但这里我想要用户被重定向到用户点击链接登录的地方。 我试着用下面的代码,但

  • 我是使用会话变量的新手,尽管我在网上搜索了解会话变量,但我一直在苦苦挣扎。 所以基本上我有一个页面(search.php)。我加载一个基于搜索表单的动态数据表。加载表后,我通过AJAX执行以下操作: 正如您在Success和单击table row记录时所看到的,我的想法是通过AJAX发布一个变量以供以后使用。并将用户重定向到update.php页面。 然后,我希望使用发布的AJAX变量在sessi

  • 问题内容: 我有用于向会话添加变量的PHP代码: 当用户选择“删除”时,我想从会话数组中删除显示的变量。 但是,当我取消设置时,将删除数组中的所有变量。 如何仅删除一个变量? 问题答案: 由于是数组,因此需要找到指向您感兴趣的名称值的数组键。最后一行重新排列数组的索引,以供下次使用。