2011-02-11 117 views
0

当用户点击我的绿色按钮时,我需要使用Javascript来检测这一点,并将$ UserID和$ ActivityID传递给服务器以存储在数据库中。Javascript如何安全地访问用户信息?

但是,什么是最好的方式让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然后点击按钮会怎么样? 不会将垃圾写入数据库吗?

感谢您的提示。

+0

为了澄清,$用户名和$ ActivityID只是两个数字。因此,如果有人在HTML中将隐藏的$ UserID从“1”更改为“2”,服务器验证将无法捕捉到这一点。我怎样才能防止这种情况? – JMan 2011-02-11 05:49:52

回答

1

那么,你需要解释你正在寻找哪种安全性。您是否希望保护通过网络发送的数据?如果是这样,那么你必须选择SSL证书并发送AS后的数据。但是,如果你希望用户看不到数据,那么就没有这种方法去做,因为如果有人正在读取从他的机器发送的数据包,他可以很容易地找出发送的数据过度。

+0

是的,我同意拉尔夫的观点,您需要验证服务器上的数据,而不是信任用户发送的任何内容。 – Ankit 2011-02-11 05:38:50

1

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

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... 
    }); 
} 

正如上面提到的,它不是真正的安全,只是有点万无一失..

相关问题