通常只会在授权用户的页面上加载的静态内容是否可公开请求?
假设有两条路线/public-route
和/private-route
public-route
加载:
/public-route.html
/public-route.js
/logo.jpg
private-route
加载:
/private-route.html
/private-route.js
/logo.jpg
要加载/private-route
页面,用户需要进行身份验证。请求/private-route.html
作为未经身份验证的用户将返回401
。但是,如果用户直接请求/private-route.js
怎么办?将所有客户端文件置于授权检查之后是否太过分了?
我也从React组件的角度来看这个。比如说,给定页面具有仅某些类型的用户(访客,用户,管理员)可用的某些组件。我应该创建3个单独的App.js吗?
答案 0 :(得分:0)
这取决于您正在处理的应用程序类型,如果应用程序被视为敏感应用程序,则允许未经身份验证的用户访问应该仅向已通过身份验证的用户提供的任何内容是不可接受的。如果您正在使用专业应用程序并且担心安全性,则需要解决此问题。
您可能希望将公共和私有内容放在应用的两个不同子目录中,这些子目录由不同的路由提供服务:例如your.site.com/public
将从/public
返回文件和资源,而{{1}首先会检查请求是否经过身份验证,如果是,则从your.site.com/private
返回文件和资源。这样做可以防止攻击者下载您的/private
网站代码和资源。如果有人可以创建虚假/试用帐户并对私人部分进行身份验证,那么这当然就变得无关紧要了。
您可能需要确保的一件事是在api级别执行检查以验证经过身份验证的用户是否正在调用私有端点,在Web应用程序中保护的最重要部分是数据而不是前端源代码。
您处理此问题的方式在很大程度上取决于您在后端使用的技术。例如,使用node和express,您通常会为每个私有端点添加自定义中间件。一些更高级别的框架也可以为您处理。