2013-05-20 31 views
0

我使用Firefox的Firebug改变的变化值与jQuery的HTML()

<span></span> 

值,然后利用

$("span").html(); 

但它得到改变价值得到而不是加载页面时生成的原始值。

我怎样才能获得跨度的原始值,而不是一个改变的萤火虫?

我只是为了安全目的而提出这个问题,因为我在ajax中使用这个值来保存到数据库,但是现在,它可以很容易地被坏的用户在Chrome上使用萤火虫或元素检查修改。

我是否正确地做到了这一点?发送到客户端

回答

1

任何事情是可以改变的,你不能依靠你的前端的安全性。你必须确保你的服务器端代码是安全的。

即使你是从不断变化的跨度值停止用户,他们仍然可以复制你的AJAX请求及改变参数来送什么东西给它会接受服务器。你需要在接收端清理用户的输入,并过滤出你不想要的任何东西。

如果你使用SQL数据库事务,你应该读了关于如何避免SQL注入。正如您所提到的,用户可能会尝试将SQL发送到数据库,这可能是有害的。这个主题有一个有趣的article

+0

尼斯答复。我会检查我的PHP接收AJAX请求以避免SQL注入。谢谢! –

+0

@ThiagoRocha当然可以!用户输入永远不会太小心!另外,如果这有助于你接受答案? –

1

如果你所关心的价值变化,你需要的值进行比较,以原提交之前。

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'); 
     } 
    }); 
}); 
+0

是的,但是通过这段代码,我不能存储新的跨度值,因为它只检查值是否已更改(用户或脚本本身),如果不是,执行ajax,对吗? –