【问题标题】:Correct way to use access level使用访问级别的正确方法
【发布时间】:2019-02-11 08:16:03
【问题描述】:

我的网络的一部分是按次付费的,所以我必须隐藏 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), "/");

然后使用 JavaScript 调用 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 调用来做到这一点,但我现在确实想等待回调。

我怎样才能做到这一点?

【问题讨论】:

  • 您在客户端所做的任何事情都可以使用浏览器开发工具轻松解决...
  • 坚持使用PHP版本,如果用户不知道使用什么代码,就很难猜测他们需要做什么才能获得访问权限(除了付费)。
  • 正如@fredrik 所说,保护“会员区”的最佳方法是不在网页中呈现信息。所以你的 php 解决方案是最好的
  • 好的,谢谢大家的反馈

标签: javascript php session


【解决方案1】:

如果您在 Javascript 中进行检查,攻击者(或不良用户)可以绕过检查并获得他想要的东西。

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

【讨论】:

    猜你喜欢
    • 2015-02-20
    • 1970-01-01
    • 2013-11-28
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    相关资源
    最近更新 更多