通过会话维护安全性

时间:2014-03-13 17:02:27

标签: php

<?php
$name=$_GET['var'];
if($_SESSION["loginvalue"]==1)
{
echo "Welcome,$name";
echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href='login.php'>Logout</a>";
}
?>

这是我用来在页面中维护会话的代码。我想要的是,如果有人在网络浏览器中输入local / project / cms.php url,那么它就不应该打开。我希望cms.php只有在有人先登录时才会打开,否则不应该打开。

2 个答案:

答案 0 :(得分:0)

您可以像这样修改代码:

<?php
    session_start();
    $name=$_GET['var'];
    if($_SESSION["loginvalue"]==1)
    {
        echo "Welcome, ". htmlentities($name, ENT_QUOTES, "UTF-8");
        echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href='login.php'>Logout</a>";
    }else{
        //Redirect user to login page.
        header("location: /login.php");
    }
?>

答案 1 :(得分:0)

不是100%肯定你的意思;但...

首先,给出的代码存在一些问题,session_start(),您的代码也在$name var上对XSS attack开放,因为您没有转义输入,需要使用htmlentities()用户输入如果您要将其显示回用户。您还需要在使用前检查变量是否已设置,以避免PHP未定义的索引警告。除此之外,您基本上检查用户是否已登录,如果没有,则将其重定向到您的登录页面。

<?php
    session_start();
    $name = isset($_GET['var']) ? $_GET['var'] : null;
    if(isset($_SESSION["loginvalue"]) && $_SESSION["loginvalue"]==1)
    {
        echo "Welcome,".htmlentities($name, ENT_QUOTES);
        echo '&nbsp;&nbsp;&nbsp;&nbsp;<a href="./login.php">Logout</a>';
    }else{
        //Redirect user to login page if not logged in.
        exit(header("location: ./login.php"));
    }
?>