3

在我的网站中,我为会话对象设置了一些值,例如“user_status”、“user_name”等。php 文件如下所示:

<script type="text/javascript">
    var logged = <? echo $this->session->getValueOf("user_status"); ?>;
</script>

<a class="show_message" href="#">SHow my status</a>

好吧,我有一个 js 脚本,它假装根据user status网站上的操作,所以,我有这个:

$('.show_status').click(function(event){

    //ask for user status
    if (logged){
        //do something
    }
    else{
        //do another action for visitors
    }
});

四处走动我认为这是否是在session->之间流动数据的最佳方式javascript,因为如果您在浏览器中检查页面源,则 的值user_status将是可见的,并且可能对网站安全构成风险。

提前致谢

编辑:

  1. loggedvar 只接受一个布尔值。
  2. 每次#(".show_status")点击元素时都必须执行js动作。
4

2 回答 2

3

如果 JavaScript 只是用于接口的东西,并且没有任何后端效果,我可能不会太担心处理该逻辑客户端的不安全性。

但是,如果安全性很重要,我建议您使用 PHP 编写适当的 JavaScript 函数。例如:

在正在查看的页面上,也许在标题中,您有:

<script type="text/javascript">
    <?php
    if ($this->session->getValueOf("user_status")) {
        require_once('logged_in_user_functions.js');
    } else {
        require_once('visitor_functions.js');
    }
    ?>
</script>

在“logged_in_user_functions.js”文件中,您有:

function showComment(id) {
    //logic that shows the comment here
}

function showCommentSubmissionForm() {
    //logic that adds this form to the page goes here
}

同时,在“visitor_functions.js”文件中,你有:

function showComment(id) {
    //logic that shows the comment in a different way goes here
}

function showCommentSubmissionForm() {
    //logic to display a message saying the user needs to log in to post a comment goes here
}

然后,您可以将逻辑添加到您的页面中,而无需检查用户状态。正确的行为是由包含的 .js 文件提供的:

<button id='add_comment_button' onclick='showCommentSubmissionForm()'>Add Comment</button>

这使 PHP(因此是服务器,而不是客户端)对向用户显示的内容有最终决定权。

于 2012-07-30T03:18:48.457 回答
2

假设这user_status将类似于Active,那么这并不是真正的安全风险。

如果你想隐藏一切不被随便窥探,你可以尝试使用加密的 cookie,使用类似How to save encrypted data in cookie (using php)? 加密你的价值观。

于 2012-07-30T03:16:39.557 回答