我试图使用ajax将一些数据发布到另一个php文件。此数据位于link属性上。我认为页面上的坏人可以检查元素并更改特定数据属性的值,我希望使用javascript来阻止这种情况发生。
例如:<a href='#' data-user_id='25'> Add Friend </a>
如果坏人检查页面并尝试更改属性的值,我如何让javascript确保data-user_id的值仍然相同?
下面是我的代码,但它不按我想要的方式工作:
<script>
$(document).ready(function(e) {
$(".save").attr("data-user_id").change(function(){
var savefriendbtn = 57;
if($(".save").attr("data-user_id") !== savefriendbtn){
$(".save").attr("data-user_id","57");
}
})
});
</script>
非常感谢代码示例。 谢谢
答案 0 :(得分:2)
简短的回答你无法验证更改,即使它可以阻止用户检查你的JavaScript并播放或修补其他一些代码并覆盖你的客户端检查,
客户端检查从来都不是验证有效数据的方法,它是一种帮助但无法保证或依赖它的方法,您应该对这部分代码进行后端验证,
如果不允许此用户将此用户添加为朋友,则在后端验证,否则如果他更改了ID并添加了另一个用户,只要他能够这样做就没有问题,并且您可能会或可能不会处理错误对于这部分实际上对我来说,我不在乎如果一个错误爆发给用户,如果他的错误是通过黑客攻击。
答案 1 :(得分:-1)
如果我理解正确,你需要在用户(或坏人)浏览页面时运行此函数,不断强制元素的id为57.
如果我没有错,你就不需要jquery。
有两个问题:
var savefriendbtn的数字类型为57,而您将其设置为&#34; 57&#34;,一个字符串。
问题应该是因为Document.ready只调用一次,即第一次加载页面时。因此,您可以设置事件监听器或执行以下操作:
setInterval(function(){document.getElementById('save').data-user_id=57;},1000)
有帮助吗?
然后,坏人可以简单地将var更改为另一个值,从而阻止整个机制工作。我真的希望这可以帮助你。