我正在为学校项目建立一个CMS。根据已登录用户与其关联的权限,需要隐藏/显示某些功能。我希望能够在服务器端整理所显示的功能,以便用户无法在client.js文件中看到禁用的功能。
实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
你想要完成的事情增加的复杂性在理论上是整齐的,但甚至不是国防部或国防承包商应用程序的高度关注。
发送或不发送端点并不能真正保护您免受太多伤害。如果用户正在检查您的JavaScript并尝试恶意,他们可能知道如何使用补丁检查器来了解您试图隐藏的端点的存在。
尝试构建动态版本的client.js及其维护的额外复杂性远远超过隐藏端点的收益。保护端点的最佳方法是确保端点执行授权检查,如果用户无权执行该操作,则返回403。
就应用程序安全性而言,这远远低于其他主要的应用程序强化问题,例如XSS和CSRF以及服务器上的正确服务器验证和授权检查。有关实际应用程序安全问题和漏洞的完整列表,我建议您阅读OWASP
答案 1 :(得分:0)
我建议不这样做,但如果你真的想:
如果您使用webpack / browserify,您可以尝试构建2个js包:1' normal'没有特殊功能和1'特殊'通过指定不同的入口点与他们。这将要求您以这样的方式订购代码:特殊功能永远不会从正常情况中引用。 JS。
您可以为此创建各种解决方案。重新构建完整的代码库,放置某种垫片代替实际代码,在编译之前交换文件,或者设计某种运行时加载器以获得单独的代码。
如果您的代码中有某些内容,您真的不希望非管理员看到您可能更好地重新组织您的代码,以便在那里没有类似的东西。也许应该将一些逻辑移到服务器上?