【问题标题】:Node js security: CORS, admin page and other thingsNode js 安全性:CORS、管理页面和其他东西
【发布时间】:2015-01-10 14:05:01
【问题描述】:

我正在构建我的第一个 node.js webapp。我不需要管理用户注册。我只需要一个可以轻松更新某些页面内容的管理页面。

我几乎完成了开发阶段,但我想澄清一些关于安全性的事情。

管理页面:有 2 个安全级别:

  • 1) 管理页面链接到 mywebsite.com/hexadecimal_string 。 也许这很愚蠢,但管理页面是"secret" 页面。链接 mywebsite.com/admin 太常见了。你认为使用 十六进制字符串可以被认为是第一级安全吗?

  • 2) 当然有一个管理员密码,存储在我的数据库中。如果 密码正确,设置了临时cookie。也许我应该 在发布时加密此密码,但我不打算使用 HTTPS。有没有一种不同的方式,通过使用 https 来发布 密码更安全?

CORS:我不需要 CORS,但有件事让我抓狂:

在主页中,每个人都可以将一些数据发布到服务器(我们正在谈论时事通讯电子邮件和其他个人数据) 假设有人以相同的方式阅读主页的 javascript 代码(特别是 ajax url),他尝试将数据发布到相同的 url,但使用跳过验证阶段的个人脚本。当然,我也对服务器进行了验证,但我不想接受来自我以外的个人脚本的任何请求。服务器应该只响应来自我的 javascripts 的请求,任何人都可以运行访问 www.mywebsite.com。来自不同脚本的所有其他请求都将收到500-server error

现在,我读到很多人试图允许 CORS。因此,我假设默认情况下禁用了 cors,但我尝试将数据从另一个网站发布到我的网站,并且数据已毫无问题地发送,服务器响应 200。为什么?我可以管理这件事吗?

在我的情况下,为了安全起见,我还需要分析和管理其他常见的事情吗??

【问题讨论】:

    标签: javascript ajax node.js security cors


    【解决方案1】:

    由于您不想使用 https 并且正在寻找替代方案,我认为您不希望密码在传输过程中被嗅探。我建议一个简单的加密解密算法可能适合你。对于第二个问题,您可以添加一个验证字符串,客户端 JS 将在访问您的服务器 API 时将其与其他参数一起传递。如果您在每次客户端加载某些特定页面时生成此字符串,那么字符串的重复也将被处理。 如果您根本不想在服务器端维护任何类型的数据库,则将隐藏的 HTML 字段附加到 API 命中。您可以再次加密和发送此隐藏字段。如果您定期从服务器广播该字段,则无法复制该字段。

    同样在 CORS 中,您不能从跨域请求数据。当浏览器从服务器收到回复时,CORS 块就会到位。仅发布数据不会导致任何问题。

    【讨论】:

    • 关于cors:发布数据会导致问题!数据将被添加到我的数据库中,我不想要它!只有当“帖子”来自我的网站时,我才想要它。我再说一遍,我尝试从另一个网站发布数据,而我的服务器执行所有插入等操作,就好像请求来自我的网站一样。还有“第二个问题”??我不明白你在指什么..
    • 第二个问题是个人脚本在您的数据库中插入数据。同样,您可以在调用服务器 API 时添加验证字符串或隐藏字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 2013-10-17
    • 2016-01-22
    • 1970-01-01
    相关资源
    最近更新 更多