如何使用电子安全地与数据库通信?
How to communicate securely to an Database with electron?
我正在创建一个连接到数据库并执行 POST 和 GET 请求以检索数据并将数据插入其中的电子应用程序,问题是我在代码中定义了我的数据库 uri(我正在使用mongodb)
const uri = "mongodb+srv://<myusesrname>:<mypassword>@cluster0.wqbiu.mongodb.net/query?retryWrites=true&w=majority"
就像上面的例子一样,但是如果我打包我的电子应用程序到数据库的连接以及凭证,如果有人解压缩 app.asar 文件并查看 server.js 文件,那么它是可见的我该如何解决这个问题?我不希望我或将要使用我的应用程序的人有任何安全漏洞,在此先感谢您的回答:)
需要与某物建立安全连接的应用程序不能将任何用户名或密码硬编码到其代码中。
相反,使用了 authentication and authorisation 的过程。
Authentication用于验证用户。 IE:他们就是他们所说的人,通常通过使用某种类型的登录表单来实现。
授权用于验证logged-in用户是否被允许访问所请求的资源。 EG: 是否允许此用户从数据库中检索所有用户电子邮件地址的列表。
作为粗略指南,用户将使用他们的用户名和密码登录。如果需要,您也可以在这里使用 OpenID。一旦用户是 'logged-in',您就可以设置一个 cookie 或会话,并将会话 ID 保存在数据库中以针对用户。当然,所有这些都是通过 HTTPS 完成的。
有多种方法可以控制会话的有效性,例如但不限于每次用户点击服务器时刷新到期日期/时间,如果用户没有与服务器交互超过X分钟等
在您的应用程序中,用户可以随时尝试与数据库交互,但如果用户未登录,服务器可以 return 适当的响应并提示用户登录。某种形式的 API 才是正确的选择。
如果用户已登录,那么下一步就是授权用户请求,确保在发回响应之前允许他们执行请求的操作。如果他们无权访问该资源(例如:编辑另一个用户的 post),则会 return 编辑一个适当的响应来表明如此。
如您所见,保护您的应用程序需要一些工作,但不这样做的结果可能会给您和您的用户带来毁灭性的后果。
我正在创建一个连接到数据库并执行 POST 和 GET 请求以检索数据并将数据插入其中的电子应用程序,问题是我在代码中定义了我的数据库 uri(我正在使用mongodb)
const uri = "mongodb+srv://<myusesrname>:<mypassword>@cluster0.wqbiu.mongodb.net/query?retryWrites=true&w=majority"
就像上面的例子一样,但是如果我打包我的电子应用程序到数据库的连接以及凭证,如果有人解压缩 app.asar 文件并查看 server.js 文件,那么它是可见的我该如何解决这个问题?我不希望我或将要使用我的应用程序的人有任何安全漏洞,在此先感谢您的回答:)
需要与某物建立安全连接的应用程序不能将任何用户名或密码硬编码到其代码中。
相反,使用了 authentication and authorisation 的过程。
Authentication用于验证用户。 IE:他们就是他们所说的人,通常通过使用某种类型的登录表单来实现。
授权用于验证logged-in用户是否被允许访问所请求的资源。 EG: 是否允许此用户从数据库中检索所有用户电子邮件地址的列表。
作为粗略指南,用户将使用他们的用户名和密码登录。如果需要,您也可以在这里使用 OpenID。一旦用户是 'logged-in',您就可以设置一个 cookie 或会话,并将会话 ID 保存在数据库中以针对用户。当然,所有这些都是通过 HTTPS 完成的。
有多种方法可以控制会话的有效性,例如但不限于每次用户点击服务器时刷新到期日期/时间,如果用户没有与服务器交互超过X分钟等
在您的应用程序中,用户可以随时尝试与数据库交互,但如果用户未登录,服务器可以 return 适当的响应并提示用户登录。某种形式的 API 才是正确的选择。
如果用户已登录,那么下一步就是授权用户请求,确保在发回响应之前允许他们执行请求的操作。如果他们无权访问该资源(例如:编辑另一个用户的 post),则会 return 编辑一个适当的响应来表明如此。
如您所见,保护您的应用程序需要一些工作,但不这样做的结果可能会给您和您的用户带来毁灭性的后果。