我正在开发一个 React 项目,并且喜欢它的动态性。然而,在处理动态安全功能时(在我的例子中是 Google reCAPTCHA),我非常担心用户操纵我的状态和属性的可能性。
例如,这就是我处理 reCAPTCHA 的方式:
class Create extends Component {
constructor() {
super();
this.onRECAPTCHA = this.onRECAPTCHA.bind(this);
this.state = {captcha: false}
// ...
}
onRECAPTCHA(value) {
if (value == null) {
this.setState({captcha: false})
}
this.setState({captcha: true})
}
}
我有一个按钮 onClick 的处理程序,它在函数中,在继续之前对 this.state.captcha 进行测试。它按预期工作,但我偶然发现了react-dev-tools,发现我能够手动操纵我的验证码状态!我是否公然遗漏了某些内容,或者我不应该将验证码设置为状态/属性?这让我担心我设置的其他几个状态/ Prop 。我所有的验证都以这种方式存储。
最佳答案
最终,您需要授权才能在安全的环境中进行操作,而浏览器不适合这样的地方。例如,如果您要保护表单提交,则需要使用服务器端代码来处理提交以验证验证码响应是否符合预期。只要您不将客户端状态用作验证/授权的唯一来源,那么可以操纵客户端状态这一事实就不应该真正重要。
关于node.js - react 安全: state manipulation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50958349/