【问题标题】:How to prevent opening an authenticated php web page?如何防止打开经过身份验证的 php 网页?
【发布时间】:2014-12-31 06:36:06
【问题描述】:

我有管理页面。如果用户仅使用正确的凭据登录到管理员,我需要允许用户访问管理员页面。我已经在所有管理页面中使用会话变量检查用户是否已登录。

但仍然通过 burp suite 之类的工具,通过将响应代码从 300 更改为 200,并且能够在不登录管理员的情况下打开管理页面。

请告诉我如何防止用户在未登录的情况下查看经过身份验证的页面。

【问题讨论】:

    标签: php burp


    【解决方案1】:

    您可以在用户表中添加一个字段来声明用户是否是管理员。

    然后,你可以使用 PHP 来询问当前用户是否为 admin,以及是否应该显示该页面。

    【讨论】:

    • 谢谢哈达尔。请看示例场景:我有 login.php 和 news.php 文件。我需要以管理员身份登录才能访问news.php,在浏览器中直接输入news.php,如果我没有登录,它不应该打开。通常如果我输入news.php,如果我没有登录,它会重定向到login.php文件通过使用 Burp Suite 工具的拦截,我们将响应代码 300 更改为 200,并且能够打开 news.php 文件。我想阻止打开 news.php 文件,即使打开 200 响应代码。请帮帮我。
    • 答案是一样的,你需要用一些东西来声明用户是否是管理员,在我的例子中你可以通过使用你的表来实现。您也可以在登录页面之后使用会话,并添加另一个决定用户是否是管理员的会话(如 @SHADOWS 建议的那样)。
    • 你需要使用这个:header('Location: /login.php');然后使用 'exit()' 阻止对该页面的访问。
    【解决方案2】:

    使用额外的会话变量,如用户类型,以便您可以在登录后轻松获取用户类型,并且应该在每个管理页面中检查此变量。如果类型不是管理员,则重定向到另一个页面。

    【讨论】:

    • 谢谢。请参阅我对 Hadar 的评论。帮我解决。
    • @BVLKIRAN 添加额外的会话变量是可能的解决方案。还可以使用 .htaccess 文件来保护您的目录。
    【解决方案3】:

    问题已解决,数据在标头调用之前已发布。这就是为什么这个问题来了。谢谢。

    【讨论】:

      猜你喜欢
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 2016-07-02
      • 1970-01-01
      • 2015-01-13
      • 2014-04-27
      • 1970-01-01
      相关资源
      最近更新 更多