douyong8801 2016-02-06 09:12
浏览 21
已采纳

PHP页面安全性损坏

I have this at the top of a navigation file which is included on every single page:

if (!is_logged_in()){
        login_error_redirect();
}

Here's that function:

function is_logged_in(){
    if(isset($_SESSION['GBuser']) && $_SESSION['GBuser'] > 0){
        return true;
    }
        return false;
}

Now this works insomuch as if you try to browse to a protected page you get redirected to the login page, but for some reason it doesn't apply if you supply a GET request, which allows you to completely bypass the whole thing. For instance, having just logged out (which calls session_destroy();), I can enter the following address and the item gets deleted:

../site/products.php?delete=20

What am I missing here? That products page includes the same navigation file with the security check above, but passing in a GET variable skips it completely for some reason.

EDIT: here's the top of products.php:

require_once $_SERVER['DOCUMENT_ROOT'].'/shopping/core/init.php';
include 'includes/head.php';
include 'includes/navigation.php';

//if the delete product button was clicked
if(isset($_GET['delete'])){
    $delete_id = (int)($_GET['delete']);
    $db->query("UPDATE products SET deleted = 1 WHERE id = '$delete_id'");
    header('Location: products.php');
}

And at the very top of navigation.php is the check:

if (!is_logged_in()){
        login_error_redirect();
}
  • 写回答

1条回答 默认 最新

  • douzhao6584 2016-02-06 09:20
    关注

    Assuming login_error_redirect() actually redirects, you will have to add exit to stop the script after that function is called. By default, PHP will run all your code on the page regardless if you redirect at the top.

    if (!is_logged_in()){
            login_error_redirect();
            exit;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行