Javascript如何安全地访问用户信息?

时间:2011-02-11 05:31:55

标签: php javascript jquery

当用户点击我的绿色按钮时,我需要Javascript来检测这个并将$ UserID和$ ActivityID传递给服务器以存储在数据库中。

但是,JS安全获取此信息并将其发送到服务器的最佳方式是什么? 我一直在隐藏HTML中的变量:

HTML:

 <div class="green-button">Add it</div>
 <input type="hidden" class="u" value = " <?php $UserID ?>  "/> 
 <input type="hidden" class="a" value = " <?php $ActivityID ?>  "/> 

jQuery的:

jQuery('.green-button').click(function(event){
var $UserID = jQuery(this).siblings('input').hasClass('u').attr('value');
var $ActivityID = jQuery(this).siblings('input').hasClass('a').attr('value');
// rest of the code...

然而,这似乎并不安全。 如果有人使用Firebug更改HTML然后点击按钮怎么办? 不会将垃圾写入dbase吗?

感谢您的提示。

4 个答案:

答案 0 :(得分:1)

使用服务器端脚本语言验证从浏览器传递给它的任何内容。服务器不应信任Web浏览器中发生的任何事情。因此,如果传递了user =“johnSmith”并且activity =“save”,则检查页面是从JohnSmith发送的(可能是您已将用户存储在会话对象中)。另外,选中“保存”是一个有效的操作。

答案 1 :(得分:1)

嗯,你需要解释一下你在寻找哪种安全性。您是否希望保护通过网络发送的数据?如果是这样,那么您将不得不选择SSL证书并通过它发送数据。

但是,如果您希望数据对用户不可见,那么就没有这种方法可以做到,因为如果有人正在读取从他的机器发送的数据包,他可以很容易地找出正在发送的数据

答案 2 :(得分:0)

您可以隐藏您的值(将您的值存储为HEX,Base64等),或使用HMAC http://us.php.net/manual/en/function.hash-hmac.php对数据进行哈希处理。

答案 3 :(得分:0)

除了服务器检查之外,您还可以在文档加载后获取输入值,将它们保存在某些javascript对象中,从DOM中删除输入,然后在按钮上单击从对象发送值。

$(document).ready() {
    var store = [];
    $('input').each(function () {
      store.push( { this.className : this.value });
      $(this).remove();
    });

   // now all you data save in store hash array with pairs: { class : value }

    $('.green-button').click(function(event){
       ...send values from "store" variable...
    });
}

如上所述,这不是真正的安全,只是有点万无一失......