在我的反应应用程序中,我在后端计算订单的价格,然后将其转移到状态。但最后,PayPal订单金额通过州传递。这意味着,如果黑客能找到一种方法将状态更改为"1美元",他们就可以更便宜地获得物品。
这只是我在状态内计算东西的一个案例,我想知道黑客改变状态的情况是否可能。
我用状态做敏感事情的另一个案例: 当用户尝试重置密码并且他们的IP没有被列入黑名单太多次尝试时,我会将他们转移到他们需要输入他们收到的密码到手机的页面。如果他们输入无效的引脚,我会增加"失败尝试"状态,如果他们失败了 3 次,则不会接受他们的提交。这样做不是一直到数据库并存储其失败的 PIN 码。如果黑客将状态更改为 0,他们可以简单地暴力破解只有 6 位长的电话 pin。
我认为您应该将失败的尝试保存在数据库中,而不是在UI部分中,作为计算价格。
应从服务器获取受保护的内容,并且此服务器应仅在用户发送有效令牌时传递内容。
这样,是的,任何人都可以在客户端中翻转开关,但这只显示 UI 组件,没有任何数据。
这是创建单页应用程序时的常用方法。只要您从一开始就在客户端中没有秘密或敏感数据,它们就与提供数据的服务器/API 一样安全。