express - 传递给“res.render()”的本地人是否足够安全以包含敏感信息?
问题描述
我对 web 开发的服务器端方面相当陌生,我试图根据用户的访问权限(即他是否是管理员)有选择地显示某些元素。我正在考虑使用 Pug 做这样的事情:
<body>
<h1> Header </h1>
if locals.is_admin
p.admin-only Admin-only Content
</body>
我会假设在从模板创建页面后会丢弃这些数据,但我知道在涉及安全性时不要相信我的假设。那么,这样做安全吗?
解决方案
当地人是否
res.render()
足够安全以包含敏感信息?
这取决于。传递给res.render()
的本地变量只是服务器中的变量,因此它们不会比服务器中的任何其他变量更具漏洞。一旦您的代码不再使用它们并res.render()
完成渲染操作,它们就会被 JS 引擎垃圾收集。
“它取决于”部分是因为它取决于您的模板对数据的作用。如果模板在呈现的 HTML 文件中包含任何该数据,那么这些数据将被发送到客户端,并且它在任何方面都肯定是不安全的。
但是,如果您的呈现逻辑确定用户不是管理员,因此在呈现的 HTML 文件中不包含任何敏感信息,那么该信息将不会离开您的服务器。因此,实际上取决于模板文件中的逻辑来确定哪些本地人离开服务器以及将其发送给谁(哪个用户)。这就是您的安全问题可能出现或可能出现的地方。您是否安全且正确地确定谁拥有管理权限,您的模板是否正确使用该确定来确保它不会向错误的用户披露信息,并且您是否向管理员发送了您应该发送给他们的数据?
推荐阅读
- python-3.x - 如何为 input() 提供时间窗口,如果不使用则让程序继续运行
- javascript - 在具有视差效果的滚动时在 Safari 中抖动
- docker - 如何编曲?
- c - 程序集中局部变量的大小
- git - Git文件夹被损坏
- java - 不区分大小写的 POSIX 正则表达式在 Java 模式和匹配器中不区分大小写
- swift - 选择单个视图控制器,该控制器将根据表视图控制器中选择的索引显示一定数量的 UITextField
- .net-core - 未被识别为有效的日期时间
- c++ - 有效地返回未修改的参数
- javascript - 将亵渎过滤器添加到简单的 Socket.IO 应用程序