【发布时间】:2020-08-29 16:55:06
【问题描述】:
我刚刚发现在开发人员工具中编辑按钮以启用禁用的按钮不会改变任何事情。该按钮以某种方式在内部保持禁用状态。 (虽然禁用的样式效果被移除了)
//This is how the button looks like in Chrome developer tools
<button disabled>Post</button>
//editing out "disabled" does nothing. The click event doesn't get called
有趣的是,尝试禁用启用的按钮也不会改变任何事情。 onClick 方法在被点击时仍然会被调用。
在我发现之前,我总是使用一个标志来阻止点击,以防恶意用户启用该按钮。
....
const [enabled, setEnabled] = useState(false)
....
....
const postData = () = {
if(!enabled) return;
//sensitive action takes place here
}
....
....
return(
<button disabled={!enabled} onClick={postData}>Post</button>
);
....
我只想知道从postData() 函数中删除if(!enabled) return; 行是否完全安全。是否有其他工具可以真正启用禁用的反应按钮或直接调用postData()?
【问题讨论】:
-
您可以将决定是否应在事件处理程序中禁用按钮的完全相同的代码放入(如果应该立即
return)。但如果这是一个安全问题,一般规则是永远不要相信前端发送给您的内容,并在服务器端调整您的行为 -
@Treycos 这不是我在示例中所做的还是我遗漏了什么?
标签: html reactjs events button disabled-input