我正在尝试使我的REST API更安全。目前我正在使用CryptoJs.SHA256在我的角度应用程序中对我的密码进行哈希处理,然后再将其发送到我的C#后端。但我意识到在服务器端散列密码更好。那么如何才能发送只能由服务器读取的密码?我要添加SSL,但我知道HTTPS也是易碎的。还有其他解决方案吗?
谢谢
答案 0 :(得分:4)
正如Bruce Schneier says,"任何人都可以设计一个他自己无法破解的密码。这就是为什么你应该统一不信任业余密码学,以及为什么你应该只使用经过广泛密码分析的已发表算法。"
虽然没有什么是100%牢不可破的,但打破HTTPS要比打破JavaScript中的家庭式安全方案要困难得多。请考虑这一点:如果您通过不受信任的(HTTP或HTTPS与无效证书)连接提供超级安全的JS,那么是什么可以阻止攻击者替换破坏的版本,这将绕过所有JS安全性?什么都没有。
现代浏览器将竭尽全力防止HTTPS被破坏(使用HSTS等);所以依靠HTTPS(它可以在正确使用时提供实际的安全性 更安全 - "只是忽略所有那些大的红色错误"是打破它的一种简单方法)而不是JS-over-HTTP(只提供安全感而没有实际的机会安全)。
答案 1 :(得分:0)
关于这个主题有很多来源,但很少有人真正分析过它。作为一般规则,Thomas Pornin的信任指导比其他人更多。我也强烈推荐my own survey and recommendation on the topic。
答案 2 :(得分:0)
对于您的问题,并不完全是一个完整的答案,但我首先考虑使用KDF(密钥派生函数),而不是仅仅挖掘您的秘密。您可以查看的一些KDF库是: