node.js - react 安全: state manipulation

标签 node.js reactjs security recaptcha states

我正在开发一个 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/

相关文章:

node.js - Meteor的远程数据库连接超时和重新连接

javascript - 如何删除换行符并制作单行文本?

javascript - 这两种表示法在 React.js 中的含义有何不同?

javascript - 类型错误 : Class extends value undefined is not a constructor or null (React Meteor Data)

php - 使用php javascript mysql登录注册系统的安全问题

algorithm - 暴力破解平均密码/非侵入性但有意义的限制的尝试次数?

node.js - 如何使用对象数组创建 Mongoose 模式

javascript - Mongoose 中的id和_id有什么区别?

android - 如何更改 react-native webview 的 font-family (font-family.ttf from assets)

php - 如何防止 PHP 中的 SQL 注入(inject)?