我正在构建我的第一个node.js webapp。我不需要管理用户注册。我只需要一个管理页面,它可以轻松地更新某些页面的内容。
我几乎完成了开发阶段,但我想澄清一些关于安全性的内容。
ADMIN PAGE:有2级安全性:
1)管理页面链接到mywebsite.com/hexadecimal_string
。
也许这是非常愚蠢的,但管理页面是一个"secret"
页面。链接
它mywebsite.com/admin
太常见了。你认为使用吗?
十六进制字符串可以被视为第一级安全性吗?
2)当然有一个admin密码,存储在我的数据库中。如果 密码是正确的,设置临时cookie。也许我应该 在发布时保护此密码,但我不打算使用 HTTPS。是否有一种方法,通过使用https来进行发布 密码更安全吗?
CORS:我不需要 CORS ,但有一件事让我发疯:
在主页上,每个人都可以将一些数据发布到服务器(我们正在谈论通讯电子邮件和其他个人数据)
假设有人以相同的方式读取主页的javascript代码(特别是ajax url),并且他尝试将数据发布到相同的URL但使用跳过验证阶段的个人脚本。当然我也对服务器进行了验证,但是我不想接受来自我以外的个人脚本的任何请求。服务器应该只响应来自我的javascripts的请求,任何人都可以访问www.mywebsite.com。来自不同脚本的所有其他请求将收到500-server error
。
现在,我读到了许多尝试允许CORS 的人。所以我假设cors在默认情况下被禁用但我尝试将数据从另一个网站发布到我的数据并且数据已经发送没有问题,服务器响应200
。为什么?我可以管理这件事吗?
在我的情况下,还需要分析和管理安全性的其他常见事项吗?
答案 0 :(得分:0)
由于您不想使用https并且正在寻找替代方案,我认为您不希望在传输过程中嗅探密码。我建议一个简单的加密解密算法可能会为你解决。对于第二个问题,您可以添加一个验证字符串,客户端JS将在访问您的服务器API时将其与其他参数一起传递。如果每次客户端加载某个特定页面时都生成此字符串,那么也将处理字符串的重复。 如果您根本不想在服务器端维护任何类型的数据库,则将隐藏的HTML字段附加到API命中。这个隐藏的字段再次可以加密和发送。如果您定期从服务器广播此字段,则无法复制该字段。
同样在CORS中,您无法从跨域请求数据。当浏览器从服务器获得回复时,CORS块就会到位。只发布数据不会导致任何问题。