javascript - 如何从客户端安全地发送密码?

标签 javascript c# api rest security

我正在努力让我的 REST API 更加安全。目前,我正在使用 CryptoJs.SHA256 在我的 Angular 应用程序中对密码进行哈希处理,然后将其发送到我的 C# 后端。但我意识到最好在服务器端对密码进行哈希处理。那么如何发送只有服务器可读的密码呢?我将添加 SSL,但我知道 HTTPS 也容易被破坏。还有其他解决办法吗?

谢谢

最佳答案

如布鲁斯·施奈尔 says ,“任何人都可以设计出他自己无法破解的密码。这就是为什么你应该一致不信任业余密码学,以及为什么你应该只使用经受住广泛密码分析的已发布算法。”

虽然没有什么是 100% 牢不可破的,但破坏 HTTPS 比破坏 JavaScript 自制的安全方案要困难得多。考虑一下:如果您通过不受信任的(HTTP 或 HTTPS-with-invalid-certificate)连接提供 super 安全的 JS,那么什么可以阻止攻击者替换损坏的版本,从而绕过所有 JS 安全性?没什么。

现代浏览器竭尽全力防止 HTTPS 被破坏(使用 HSTS 等);因此,依赖 HTTPS(正确使用时可以提供实际的安全性——“忽略所有那些大的红色错误”是破坏它的一种简单方法)比依赖 JS-over-HTTP 安全得多(这仅提供了一种安全感,而没有真正的安全机会)。

进一步阅读:https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2011/august/javascript-cryptography-considered-harmful/

https://security.stackexchange.com/questions/3921/why-do-some-people-really-hate-security-via-client-side?rq=1

https://security.stackexchange.com/questions/8596/https-security-should-password-be-hashed-server-side-or-client-side

关于javascript - 如何从客户端安全地发送密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34000297/

相关文章:

c# - 为什么 C# 中的类没有循环布局问题?

json - 如何在 SwiftUI 中显示来自 API 的 JSON 数据?

Android Retrofit入队方法没有返回值

javascript - Webkit 中的 Socket.IO 和 Websockets 每消息压缩

php - 使用 php 和 ajax 提交表单

c# - Serilog Destructure.ByTransforming<Interface>() 不工作

c# - DoWork 事件中的 LoadCompleted 事件

javascript - Angular 2 智能表动态数据不加载

javascript - 对源自自定义属性和 td 中文本的表行进行排序

json - 如何通过VB.net传递复杂的JSON对象来调用Rest API