【问题标题】:Nodejs Security IssuesNodejs 安全问题
【发布时间】:2015-12-21 01:04:23
【问题描述】:

我在我的代码中发现了一个小安全问题!它是这样工作的:用户从服务器请求一些数据,然后服务器在数据库中找到它们,创建一个数组并将其发送给客户端。在那里,html 具有在特定模板中呈现数组的功能。问题是:如果有人在开发者的控制台中键入数组的名称,他可以看到其中的所有数据,包括电子邮件、电话号码、地址等等!我的问题是:在将敏感数据发送给客户端之前,我是否必须从数组中删除敏感数据,或者事先渲染 html,然后将其发送给他们(如果我有它是第二个,我该怎么做? )。那是我的问题。有什么建议么?谢谢!

【问题讨论】:

  • 您应该从要发送的数组中删除敏感数据,这更简单,您无需更改任何客户端。
  • 是的,您必须先删除服务器上的敏感数据,然后才能将响应返回给客户端。浏览器客户端代码从来都不是一个安全的环境,所以你永远不会向它发送任何不允许被看到的东西。如果您显示相关的服务器端代码,我们只能帮助您做到这一点。
  • 无论你从服务器/数据库发送什么,都需要有一些访问控制逻辑。如果客户端正在发出请求,则必须验证此类请求的真实性。如果来自客户端的请求是真实的,那么只有这样您才会发送信息。事实上,敏感信息永远不应该发送给客户。此类信息的所有处理都应该在服务器级别进行。您的代码的客户端逻辑始终暴露在客户端,因此从客户端抽象敏感逻辑并在服务器上执行。
  • 更新:我实际上试图从数组中删除敏感数据,但是 splice() 开始做一些时髦的事情!这是代码,由于某种原因 splice() 似乎不起作用。 for(var a = 0; a
  • cmets 中的多行代码不可读。您可以使用问题下方的“编辑”链接将相关代码添加到您的问题中,对其进行适当的格式化,然后向您最想知道的任何人发表评论。在您的情况下,您需要显示数据的原始格式以及您希望它在修改后的样子。可能您想要做的是构建一个仅包含正确数据的新数组。

标签: javascript arrays node.js security ejs


【解决方案1】:

只发送你需要的东西。

它不仅有利于数据保护目的,而且如果您发送不打算使用的数据,您就是在浪费带宽!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 2014-08-19
    相关资源
    最近更新 更多