我正在改变 a 的值
<span></span>
使用 firefox Firebug 然后使用
$("span").html();
但它正在获取跨度的更改值,而不是加载页面时生成的原始值。
如何获得跨度的原始值,而不是萤火虫改变的值?
我问这个只是为了安全目的,因为我在 ajax 中使用这个值来保存到数据库,但是现在,它可以很容易地被恶意用户使用 firebug 或 chrome 上的元素检查修改。
我这样做正确吗?
发送到客户端的任何内容都可以更改,您不能依赖前端的安全性。您必须确保您的服务器端代码是安全的。
即使您要阻止用户更改该跨度的值,他们仍然可以复制您的 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');
}
});
});