如何保护Angular&春季申请

时间:2018-05-25 09:50:28

标签: angular spring-security

我们开发了一个应用程序,其中Angular 5作为前端,Spring Boot作为后端。 第一页是登录页面,它调用rest api以在后端使用LDAP进行身份验证。 我们正在使用与JWT的OAuth实现。因此,当用户登录时,凭据用户名和密码将通过。 POST请求在身体中为其他api进行身份验证。 在标题中,我们为Oauth发送clientId和secret。 问题是凭据在请求中公开,可以在浏览器开发人员选项中看到。 我需要一种掩盖/加密这些凭据的方法。

2 个答案:

答案 0 :(得分:0)

您可以使用cypto-js库来加密角应用程序中的密码。

安装:

npm install crypto-js

用法:

var AES = require("crypto-js/aes");
var SHA256 = require("crypto-js/sha256");
var MD5 = require("crypto-js/md5");
console.log(AES("YOUR PASSWORD"));//AES ENCRYPTION
console.log(SHA256("YOUR PASSWORD"));//SHA256 ENCRYPTION
console.log(MD5("YOUR PASSWORD"));//MD5 ENCRYPTION

谢谢希望这有帮助!

答案 1 :(得分:0)

嗯,在网络选项卡中请求中公开的密码是非常正常的" - 您的API需要读取密码并检查密码是否有效。

您还可以做一些事情:

  • 您绝对应该通过https进行通信,并且还可以使用其他几个安全标头
  • 您可以在浏览器端哈希密码并将哈希视为用户密码
    • 更改客户端中的哈希函数几乎是不可能的,因为它要求所有用户重新刷新密码
    • 您无法进行任何API端口密码强度验证
  • 您可以在浏览器端加密密码并在API中解密。
    • 您仍然应该在API中对密码进行哈希处理,然后存储来自客户端的加密密码(因为加密在源代码中可见到用户)

我实际上不喜欢Hash变体,因为你失去了对密码强度的控制,理论上有人可以使用API​​并创建一个密码用户"测试"或类似的东西。

第二种方法确实对您有所帮助,因此在“网络”标签中看不到它。但请注意,如果有人真正关心他可以在您的源代码中查找加密,并且仍然可以在请求中解密它,如果他有权访问它