正确的方法来使用访问级别

问题描述 投票:1回答:1

所以...我的网络的一部分是按次付费。所以我必须隐藏dom元素或使用访问级别显示。我在mySql中存储访问级别。值0是用户在创建帐户后获得的标准值。登录后,他将在我的网络上有一些功能,但不是一切。为了解锁休息,他需要购买一个计划,然后他的访问权限将会增加1.因此,如何使用该访问级别。我应该用吗?

    $_SESSION['access']= $row['access'];

之后就像:

   if($_SESSION['access'] == 1){
   // user with access lvl 1 can go to locked window
   echo '<script> function goLocation(val){
        window.location.href= "http://www.someweb.co.uk/load.php?titleID="+val;
    }</script>'}
    else{
    // user with access lvl 0 can't go to locked window
   echo '<script> function goLocation(val){
        alert("Page locked... If you would like to go there buy a access");
    }</script>'}

或者我应该将其存储为cookie

$cookie_name = "access";
$cookie_value = $row['access'];
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");

之后使用js调用cookie:

 getCookie('access');
 function getCookie(cname) {
  var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i <ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            accessLVL = c.substring(name.length, c.length);
            return accessLVL;
        }
    }
    return "";
}

并运行主要代码:

function goLocation(val){
if(accessLVL == 1){
            window.location.href= "http://www.someweb.co.uk/load.php?titleID="+val;
        }
else{
alert("Page locked... If you would like to go there buy a access");
}

我知道我也可以通过AJAX调用来做,但我现在想要等待回调。

所以我应该这样做?更安全吗?或者..也许还有其他更简单的方法?

javascript php session access
1个回答
0
投票

如果您使用Javascript进行检查,攻击者(或恶意用户)可以绕过检查并获得他想要的内容。

因此,您必须使用session检查PHP中的访问权限。即使您正在检查PHP,也不要相信cookie的值。因为session中的值位于服务器端且可以信任,而cookie中的值可以从客户端设置,并且可以设置为任何一个。

© www.soinside.com 2019 - 2024. All rights reserved.