【问题标题】:Can the user change the React/React Native state?用户可以更改 React/React Native 状态吗?
【发布时间】:2021-01-02 00:53:08
【问题描述】:

我目前正在开发一个 React Native 应用程序,我想知道当前登录的用户是否可以更改存储在状态中的任何内容。另外,我也有同样的问题,只是针对 React 网站。

我正在存储来自我的 ExpressJS api 的用户属性 subbed: boolean,我不希望用户能够更改它,因为某些功能仅供替换。

我也在使用 JWT 在每个请求上发送,但我不知道我是否误解了某些东西。

感谢任何可以帮助我的人。

【问题讨论】:

    标签: reactjs react-native express


    【解决方案1】:

    如果用户是一名程序员,并且他们足够在意,并且他们所在的平台足够复杂,可以处理代码或网络负载(例如,在计算机上,但可能不是手机),是的,他们理论上可以改变任何他们想要的。

    一个很好的假设是客户端可以修改代码并以他们想要的任何方式运行它。这没有停止 - 如果客户端运行代码,则必须向客户端发送代码,如果向客户端发送代码,客户端也可以拦截代码并在他们有足够动力的情况下对其进行修改。防止某个客户对某种数据进行他们无权处理的事情的唯一方法是一开始就不向他们发送数据。例如,如果您有一个视频网站并且只允许某些用户看到字幕,那么确保只有授权用户才能使用字幕的唯一(大部分)可靠方法是仅在服务器授权时发送字幕该用户的凭据。

    也就是说,客户端篡改并不常见,并且至少需要用户有一定的技能和努力。毕竟,绝大多数用户不是程序员。除非提供数据存在安全风险,否则您可能会认为它不值得担心。

    在不改变程序结构的情况下部分缓解这种情况的方法是:

    • 混淆并缩小客户端使用的脚本。如果脚本又大又小,阅读它的人可能很难理解和调整。
    • 以某种方式对网络有效负载进行编码 - 不仅通过 HTTPS,而且以一种在客户端检查它的程序员无法轻易理解发送的数据的方式。

    【讨论】:

    • 感谢您的回答,但是只有在用户被替换时才显示数据的好选择是什么?我是否应该在服务器端做一些事情并且只在属性设置为 true 时才返回数据?
    • 这就是一般的想法。如果提供数据是一种安全风险,那肯定是。如果实施更改很容易,请根据需要进行更改。如果这不是一个简单的调整并且不会带来安全风险,我不会打扰,除非您的网站恰好被广泛使用并且这些潜在的非法用户构成了一个不小的数字。很多网站都不会打扰,所以如果您认为不值得,这是一个完全可以接受的结论。
    • 我认为不这样做会给任何知道绕过订阅系统并访问非免费内容的人留下一个后门。处理在服务器端发送的数据不应该太难实现。谢谢你启发我。
    • 对不起,我的错 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 2021-12-25
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 2020-05-03
    相关资源
    最近更新 更多