首页 > 解决方案 > 传递给“res.render()”的本地人是否足够安全以包含敏感信息?

问题描述

我对 web 开发的服务器端方面相当陌生,我试图根据用户的访问权限(即他是否是管理员)有选择地显示某些元素。我正在考虑使用 Pug 做这样的事情:

<body>
<h1> Header </h1>
if locals.is_admin
    p.admin-only Admin-only Content
</body>

我会假设在从模板创建页面后会丢弃这些数据,但我知道在涉及安全性时不要相信我的假设。那么,这样做安全吗?

标签: expresssecuritypug

解决方案


当地人是否res.render()足够安全以包含敏感信息?

这取决于。传递给res.render()的本地变量只是服务器中的变量,因此它们不会比服务器中的任何其他变量更具漏洞。一旦您的代码不再使用它们并res.render()完成渲染操作,它们就会被 JS 引擎垃圾收集。

“它取决于”部分是因为它取决于您的模板对数据的作用。如果模板在呈现的 HTML 文件中包含任何该数据,那么这些数据将被发送到客户端,并且它在任何方面都肯定是不安全的。

但是,如果您的呈现逻辑确定用户不是管理员,因此在呈现的 HTML 文件中不包含任何敏感信息,那么该信息将不会离开您的服务器。因此,实际上取决于模板文件中的逻辑来确定哪些本地人离开服务器以及将其发送给谁(哪个用户)。这就是您的安全问题可能出现或可能出现的地方。您是否安全且正确地确定谁拥有管理权限,您的模板是否正确使用该确定来确保它不会向错误的用户披露信息,并且您是否向管理员发送了您应该发送给他们的数据?


推荐阅读