强制html属性具有相同的值

时间:2016-04-18 14:04:50

标签: javascript jquery

我试图使用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>

非常感谢代码示例。 谢谢

2 个答案:

答案 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更改为另一个值,从而阻止整个机制工作。我真的希望这可以帮助你。