如何使用 Rails API 管理我的反应应用程序中的安全性? [关闭]

Posted

技术标签:

【中文标题】如何使用 Rails API 管理我的反应应用程序中的安全性? [关闭]【英文标题】:How do I manage security in my react app with rails API? [closed] 【发布时间】:2017-11-25 00:24:24 【问题描述】:

我整天都在寻找一些答案,但找不到任何对我有帮助的东西。

我目前正在开发一个使用 React 和 Rails API 开发的平台。我的 Rails API 使用 devise-token 来处理安全和身份验证 (https://github.com/lynndylanhurley/devise_token_auth)。 我没有使用 React-Redux。

React 前端有公共页面(例如登录)和私有页面,其中需要登录(有效的访问令牌)。

我将 access-token、uid 和 client 存储在会话存储中(这 3 个参数来自登录响应),并且 access-token 在每个请求的标头中发送。

这就是我的想法:

    用户登录后,将响应存储在会话存储中以及 javascript 对象中。除非用户刷新页面或关闭并重新打开它,否则该对象将在那里。 每次用户导航到私有页面时,在 react 路由器返回组件之前,我都会检查我的 LoggedInUser javascript 对象是否有内容。如果它没有任何内容,我将使用会话存储内容调用“validate_token”端点,因为这意味着它是一个返回用户。如果有效,请将其保存在名为“LoggedInUser”的 javascript 对象中。如果不是,请重定向到登录页面。 如果我的 LoggedInUser 对象或会话存储中没有任何内容,我将重定向到登录。

我的问题是:

    如果我们总是在谈论 javascript 变量和 ajax 调用(客户端),我怎样才能使我的私人页面安全?未经授权的用户可以调试我的 javascript 文件,在“LoggedInUser”对象中创建内容,并查看我的私人页面。此人将看不到任何内容,因为所有使用无效令牌的请求都将返回 401,但他们仍然可以看到我的 html 或静态文件,以及对 API 的现有请求。

非常感谢!

【问题讨论】:

【参考方案1】:

如何确保我的私人页面安全

如果所有内容都捆绑到您的 pkg 中,则不能。但是,您可以提供模板,并仅为授权用户从服务器加载数据。

另一种选择:

在服务器上托管您的私有应用程序,并仅将其提供给允许的用户。 Webpack 允许您在需要时加载特定模块(延迟加载)。我相信,通过这种技术,您可以防止某些模块被提供给未经授权的用户。

但逻辑必须在服务器端完成:

https://webpack.js.org/guides/lazy-load-react/

【讨论】:

以上是关于如何使用 Rails API 管理我的反应应用程序中的安全性? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

RAILS:如何查询是否已有一个由一组用户组成的团队

如何在 Rails 中使用来自 npm 的反应组件

在本地运行 React/Rails 应用程序

如何使用 csurf 保护我的反应应用程序 api?

获取Rails Activerecord以使用数据库的外部API ID

Rails:如何管理同步数据的两个表之间的关联?