0

我正在构建一个Chrome扩展,其功能之一是联系我的服务器以在其上存储消息。只有知道用户才能做到。Chrome扩展和服务器之间的安全通信

我的问题是,我这样做的方式不安全。我在我的服务器上有一个数据库,用于存储用户名和加密密码。

要发送消息到我的服务器,用户必须每次写入他的密码,扩展名不会记住它。如果我使用XMLHttpRequest联系我的服务器,我有两个选择。 我公司可以派:

myServerDomain + '?message=' + myMessage + '&user=' + myUserName + '&password=' + myPassword 

而且我的服务器上加密密码,以检查它是否是好的。

或者,我可以送:

myServerDomain + '?message=' + myMessage + '&user=' + myUserName + '&password=' + myPasswordEncrypted 

,并直接在我的服务器上检查是否myPasswordEncrypted与一个保存的比赛。

但是,对于这两种方式,我只需访问用户的计算机,检查谷歌浏览器窗口转到控制台,然后网络请求获取myPasswordEncrypted或myPassword,然后发送我自己修改后的请求。

我该如何保护它?

+0

不要对密码进行加密,用盐对它们进行散列并迭代以达到100ms的持续时间。使用诸如password_hash,PBKDF2,Bcrypt和类似函数的函数。请参阅OWASP(Open Web Application Security Project)[密码存储备忘单](https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet#Leverage_an_adaptive_one-way_function)。 – zaph

回答

1

如果一个密码让你的服务器没有加密,那么你做错了。您绝对必须做的第一件事是确保密码通过HTTPS发送。之后,你可以将它散列在服务器上。对客户进行散布几乎毫无意义,这是一种可以轻易避开的方法。 See here for more details