移动端React输入框的value被键盘劫持篡改怎么办?
在开发React登录页时,密码输入框的value突然被改成奇怪字符,明明设置了受控组件:
function Login() {
const [password, setPassword] = useState('');
return (
<input
type="password"
value={password}
onChange={(e) => setPassword(e.target.value)}
onKeyDown={(e) => console.log('输入值:', e.target.value)}
/>
);
}
但用户实际输入”123456″时,控制台却打印出”abc**”,而且输入法候选框显示的内容与输入框显示不一致。试过给输入框加blur事件校验,但攻击者似乎在键盘事件冒泡阶段就修改了value。这种移动端特有的键盘劫持该怎么防御?
这个方案省事又有效,直接拦截非法修改。要真遇到特别顽固的攻击,建议后端再加一层校验,反正前端永远不可信。