当用户点击我的绿色按钮时,我需要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吗?
感谢您的提示。
答案 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...
});
}
如上所述,这不是真正的安全,只是有点万无一失......