阻止用户直接访问PHP页面

时间:2016-12-22 07:11:49

标签: php html security

我有一个生产公共电子商务网站,正在处理真实货币。我只想登录用户(授权)查看和使用该功能。

  1. 是否有任何潜在的漏洞,任何人直接调用 www.mywebsite.com/get_content.php?abc 从而调用该函数?

  2. 另外,我目前的编码方法是否足够?请提供生产电子商务网站的最佳指南。

  3. 我对PHP很陌生,并希望在其中实现安全性。

    Product.php < -accessible through navbar

    <?php
        include 'start_session.php';
    ?>
    <html>
    <head>
    </head>
    <body>
    <div class="container">
        <?php
            include 'get_content.php';
        ?>
    </div>
    </body>
    </html>
    

    start_session.php &lt;-strong .php 中的PHP。在其他页面上重复

    <?php
        session_start();
    ?>
    

    get_content.php &lt; -A仅针对 Product.php 的PHP页面,以便于阅读和维护

    <?php
    function abc(){
        //do something
    }
    
    if((isset($_SESSION['user_id']))){
        //connect db and get content
    }
    ?>
    

2 个答案:

答案 0 :(得分:1)

要获得最佳实践,请尝试使用Laravel或Yii2等框架。然后根据需要实施身份验证系统。

要创建自己的身份验证系统,您需要为登录用户建立一个user_id会话,然后在每个登录用户页面顶部创建一个检查会话用户ID的检查,如果没有设置将重定向到登录页面。

如果用户未登录,更简洁的方法是在顶部进行一次简单的检查。

if(!isset($_SESSION['users_id'])){
//redirect to login page and exit script
header('Location: /login.php');
exit;
}

答案 1 :(得分:1)

首先,您要在get_content.php文件中调用start_session();

<?php
start_session();
function abc(){
    //do something
}

if((isset($_SESSION['user_id']))){
    //connect db and get content
}
?>

然后在您的登录脚本中,当用户登录时,向会话中添加一些变量,告诉您的脚本用户已登录该站点。这是一个基本的无安全方法,但为您提供了想法

$_SESSION['user_logged_in'] = true;

然后将您的get_content.php文件更改为此类

<?php
start_session();
if ($_SESSION['user_logged_in'] == true) {
    function abc(){
        //do something
    }

    if((isset($_SESSION['user_id']))){
        //connect db and get content
    }
} else {
    //redirect user to the login screen
}
?>

如果用户未登录,则无法访问脚本