如何阻止用户使用inspect元素启用已禁用的元素?

时间:2017-09-10 14:47:08

标签: javascript jquery security

我有一个按钮如下:

<input type="submit" class="button" value="FooBar" name="FooBar" id="FooBar" disabled="disabled">

仅在满足某些参数时才启用此按钮。为了测试它是否安全,我按下F12(或右键单击 - &gt;检查元素)并编辑出文本 disabled =&#34; disabled&#34; 。这样做会覆盖我的代码,这很可怕。如何阻止某人以这种方式更改它?

我在这个页面中使用php和jquery,并使用后者来启用或禁用按钮。我已经检查了jquery点击功能,它不仅执行,而且显示按钮为禁用。以下警告显示已禁用:false

$("#FooBar").click(function(){
    alert('Disabled: ' + $(this).is('[disabled=disabled]'));    
})

那么如何防止用户更改按钮禁用状态从而覆盖我的逻辑呢?

2 个答案:

答案 0 :(得分:1)

您无法阻止人们使用开发工具。

您可以尝试一些技巧来禁用右键点击(如下图所示),这将阻止一些人,但最终解决您的问题的方法是正确使用html和http。

$(document).bind("contextmenu",function(e) {
    e.preventDefault();
});

答案 1 :(得分:1)

您可以通过以下操作禁用右键单击:

document.addEventListener('contextmenu', event => event.preventDefault());

,但不建议这样做。为什么?除了烦人的用户,它什么也没做

OR

或者,一种更好的方法是在提交操作中重新检查您的验证,并在验证失败时直接返回,在这种情况下,如果用户检查并更改了按钮的状态,则该按钮将保持空闲状态,并且不允许继续操作

$("#FooBar").click(function() {
    if (!this.acceptenceCriteria()) {
        return;
    }
    alert('Disabled: ' + $(this).is('[disabled=disabled]'));    
})