我使用Firefox的Firebug改变的变化值与jQuery的HTML()
<span></span>
值,然后利用
$("span").html();
但它得到改变价值得到而不是加载页面时生成的原始值。
我怎样才能获得跨度的原始值,而不是一个改变的萤火虫?
我只是为了安全目的而提出这个问题,因为我在ajax中使用这个值来保存到数据库,但是现在,它可以很容易地被坏的用户在Chrome上使用萤火虫或元素检查修改。
我是否正确地做到了这一点?发送到客户端
我使用Firefox的Firebug改变的变化值与jQuery的HTML()
<span></span>
值,然后利用
$("span").html();
但它得到改变价值得到而不是加载页面时生成的原始值。
我怎样才能获得跨度的原始值,而不是一个改变的萤火虫?
我只是为了安全目的而提出这个问题,因为我在ajax中使用这个值来保存到数据库,但是现在,它可以很容易地被坏的用户在Chrome上使用萤火虫或元素检查修改。
我是否正确地做到了这一点?发送到客户端
任何事情是可以改变的,你不能依靠你的前端的安全性。你必须确保你的服务器端代码是安全的。
即使你是从不断变化的跨度值停止用户,他们仍然可以复制你的AJAX请求及改变参数来送什么东西给它会接受服务器。你需要在接收端清理用户的输入,并过滤出你不想要的任何东西。
如果你使用SQL数据库事务,你应该读了关于如何避免SQL注入。正如您所提到的,用户可能会尝试将SQL发送到数据库,这可能是有害的。这个主题有一个有趣的article。
如果你所关心的价值变化,你需要的值进行比较,以原提交之前。
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');
}
});
});
是的,但是通过这段代码,我不能存储新的跨度值,因为它只检查值是否已更改(用户或脚本本身),如果不是,执行ajax,对吗? –
尼斯答复。我会检查我的PHP接收AJAX请求以避免SQL注入。谢谢! –
@ThiagoRocha当然可以!用户输入永远不会太小心!另外,如果这有助于你接受答案? –