我正在使用瓶子编写一个非常简单的后端API,这将允许我远程检查正在进行的进程。我是唯一一个将使用此服务的人 - 或者更确切地说,非常希望成为唯一使用此服务的人。这是一个非常简单的RESTish API,可以接受几个端点上的GET请求。
我从来没有真正为网络做任何开发,我想做一些简单而合理的事情。即便如此,这可能是一种过分谨慎的态度。无论如何,我非常基本的想法是在服务器上使用https,并使用基本上硬编码的密钥进行身份验证。它将以明文形式存储在服务器和客户端上,但如果有人可以访问其中任何一个,那么我就会遇到其他问题。
这种方法有什么明显的错误吗?
答案 0 :(得分:1)
答案 1 :(得分:0)
如果您使用密码验证,则需要将密码存储在服务器中,以便验证从客户端发送的密码是否正常。
在您的特定情况下,您将使用基本身份验证,因为您希望最简单。 HTTP / HTTPS上的基本身份验证使用base64对密码进行编码,但这不是保护措施。 Base64是一种双向编码,您可以对一大块数据进行编码和解码,您无需担心。 Base64编码的目的是将任何类型的数据(甚至二进制数据)编码为字符串。
当您输入密码并通过HTTPS发送密码时,HTTPS tunel会避免任何人看到您的密码。
如果有人访问您的服务器并读取密码,则会出现其他问题" copy"您用来检查输入的密码是否有效。保护的最好方法是散列它。哈希是单向编码系统。这意味着任何人都可以对密码进行哈希处理,但您无法取消一大块数据来发现密码。打破哈希密码的唯一方法是蛮力。我建议使用MD5或SHA哈希。
所以要简单一点。客户端使用http / https基本身份验证,因此您将在base64中对密码进行编码。传递它通过标题,而不是URL。服务器将在数据库或您想要的任何地方包含密码的密码副本。后端代码将重新接收http请求,获取passowrd,base64解码然后散列它。一旦经过哈希处理,您将检查它是否等于存储在服务器中的副本。
就是这样。希望它有所帮助!