我正在改变a
的值<span></span>
使用firefox Firebug,然后使用
$("span").html();
但是它得到的是span的改变值,而不是加载页面时生成的原始值。
如何获得span的原始值,而不是被firebug更改的值?
我问这个只是为了安全的目的,因为我在ajax中使用这个值来保存到数据库,但现在,它可以很容易地被一个恶意的用户使用firebug或元素检查chrome修改。
我这样做对吗?
发送到客户端的任何内容都可以更改,您不能依赖于前端的安全性。你必须确保你的服务器端代码是安全的。
即使您要阻止用户更改该span的值,他们仍然可以复制您的AJAX请求并更改参数以向服务器发送它将接受的任何内容。您需要在接收端清理用户输入,并过滤掉您不想要的任何内容。
如果你在数据库事务中使用SQL,你应该阅读一下如何避免SQL注入。正如您提到的,用户可能会尝试向您的数据库发送SQL,这可能是有害的。这里有一篇关于这个主题的有趣文章。
如果您担心值的变化,您需要在提交之前将值与原始值进行比较。
var spanMatches = function(original) {
span === "Original Span" ? true : false;
};
$(document).ready(function(){
// cache original value on domready
var original = $('span').html();
// span value gets changed
$('span').html('new value');
$('form').submit(function(){
if(spanMatches(original)){
$.ajax(function(){
// make sure you include `original` in data sent upstream
});
} else {
alert('value has been changed');
}
});
});