我正在开发一个应用程序,它将使用社交登录以便在 Facebook、Twitter 等上发布消息,并且我阅读了很多线程说出于安全原因应该将 OAuth key 保存在服务器端。
我知道这听起来像是一个愚蠢的问题,但为什么会这样呢?如果我创建了一个只允许管理登录和消息帖子的 Facebook 应用程序,那么可能发生的最糟糕的事情是,一些坏人获取了存储在前端的 key 并使用它们来登录和发布消息,但是没有别的,所以他不能造成任何伤害......
显然我仍在试图理解整个过程是如何运作的,所以我还不是专家。
为了完整起见,整个程序将成为一个 Electron 桌面应用程序,并且我试图通过没有用于发布消息的服务器来降低成本,甚至在 AWS 上也没有无服务器后端。
预先感谢您的回答!
最佳答案
试着从邻居的信任角度来考虑它。
你有一把 key 给住在你左边房子里的名叫 Lenny 的邻居和住在你右边的另一个邻居 Rhonda。你认识朗达好几年了,她相信你会保留她的 key 副本,以防她被锁在门外或丢失 key 。
Lenny 很新,但你和他喝过一次酒,他看起来是个通情达理的人。你不知道的是,莱尼是从一个小镇搬到这里的,他并没有锁好门。
你周末要离开,请 Lenny 过来给你的猫 Snuggles 一些牛奶。莱尼把你的 key 带到你家,但他不知道住在街对面的坏人布拉德正在看着他,并且看到你早些时候离开了。
现在 Lenny 去上类了,没有锁上他的房子。通常这不是问题,因为莱尼过着非常简单的孤独生活,几乎没有属性(property),但布拉德知道他有你的 key 。布拉德偷了你的 key ,去偷了你全新的电视,而在你的房子里,他找到了朗达的 key (他也偷了),然后去偷了她的电视。他把两把 key 放回他找到它们的地方,然后带着两台电视回家。现在莱尼回家了,当他来给你的植物浇水时,他惊呆了,发现电视不见了,房子也上了锁。他调用警察,警察立即怀疑莱尼,因为,好吧,他有 key 。
不要成为 Lenny,锁上你的房子(api key ),即使你是一个善良且值得信赖的人。
编辑:关于 Electron 应用程序可能出现什么问题的问题。想象一下,我丢失了我的 Twitter API key 。现在布拉德开始制作仿冒应用程序。它与我的非常相似,如上所述,从 Twitter 的角度来看,他的应用程序与我的应用程序没有区别。也许 API key 不仅具有发布权限,它还具有删除权限。现在,Brads 仿冒应用程序可以删除人们的 Twitter 帐户并发布恶意软件或其他内容。布拉德是这样做的人,但 Twitter 来找我,指责我运行垃圾邮件机器人。他们预防性地禁用了我的 API key ,现在我所有的合法客户都非常生气,并质疑我应用程序的其他区域的安全性。我的名誉受损,人们说我的应用程序被“感染”了,因为推文显示为我的应用程序而不是 Brads 应用程序发布的。如果 Twitter 确定您无法确保 key 安全,他们可能会停止向您发放新 key 。
关于oauth - 为什么不鼓励前端的 OAuth key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46370594/