2017-09-22 76 views
1

我正在开发一个应用程序,它将使用社交登录来在Facebook,Twitter等上发布消息,并且我读了很多线索,说出于安全原因,OAuth密钥应该保留在服务器端。为什么不鼓励前端的OAuth密钥?

我知道这可能听起来像一个愚蠢的问题,但为什么这样呢?如果我创建了一个只允许管理登录和邮件帖子的Facebook应用程序,那么最糟糕的情况是有些坏人会获取存储在前端的密钥并使用它们登录并发布消息,但没有别的,所以他不能做任何损害...

很显然,我仍然试图展望整个过程如何工作,所以我不是专家呢。

为了完整起见,整个程序将成为一个Electron桌面应用程序,并且我试图通过没有服务器来完成发布消息的工作来降低成本,甚至没有无服务器的后端AWS。

非常感谢您的回答!

+0

相关:https:// stackoverflow。com/questions/45448377/how-to-secure-use-an-oauth-token-in-end-end-javascript –

回答

0

试着用邻居的信任来思考它。

你的邻居有一把钥匙叫做Lenny,他住在你家左边的房子里,另一个住在你右边的邻居Rhonda。你已经认识了朗达几年了,她相信你保留她的钥匙的一个副本,因为她被锁定或失去了她的钥匙。

Lenny很新,但你曾与他喝酒,他似乎是一个合理的人。你不知道的是,莱尼从一个小镇搬到了这里,他并没有把门锁上。

你要离开的周末,并要求莱尼过来,给你的猫偎依一些牛奶。莱尼把你的钥匙带到你的房子里,但他不知道住在街对面的坏家伙布拉德正在看着他,并看到你早点离开。

现在兰妮离开工作,不锁他的房子。通常情况下这不是问题,因为莱尼生活在一个相当简单的孤独生活中,但是布拉德知道他有你的钥匙。布拉德窃取你的钥匙,去偷你的全新电视,而在你的房子里,他发现朗达的钥匙(他也偷了),并偷走了她的电视。他把两把钥匙放回他找到他们的地方,并用两台电视返回家中。现在,莱尼回到家,当他来浇水你的植物时,他发呆,发现电视没了,房子被锁住了。他打电话给立即怀疑Lenny的警察,因为他有钥匙。

即使你是一个善良而信任的人,不要成为Lenny,锁住你的房子(api钥匙)。

编辑:对于电子应用程序可能出错的问题。想象一下,我失去了我的Twitter API密钥。现在布拉德去做一个仿制应用程序。这与我的非常相似,如上所述,他的应用程序与Twitter从我的角度看没什么区别。也许API密钥不仅仅是发布权限,它也具有删除权限。现在,Brads knockoff应用程序可以删除用户的Twitter帐户并发布恶意软件或其他内容。布拉德是这样做的,但Twitter对我来说并指责我运行垃圾邮件机器人。他们预防性地禁用了我的API密钥,现在我所有的合法客户都非常生气,并质疑我的应用程序的其他方面的安全性。我的声誉受到影响,人们说我的应用程序“感染了”,因为这些推文显示为由我的应用程序发布,而不是Brads应用程序。如果Twitter确定你不能保证你的密钥安全,他们可能会停止向你发放新密钥。

+0

是的,我意识到Brad实际上是你不想成为的人,但Lenny是因为他知道自己并不是一个坏人,所以仍然天真无忌。这不是关于你是一个好人还是坏人,而是关于其他人如果他们可以穿一天你的皮肤会做什么。 – JimTheDev

+0

谢谢吉姆,这是一个很好的答案!如果这些密钥可以限制访问,我仍然不清楚有人会受到什么损害。如果和他们在一起,你只能发布消息,你能做的最糟糕的事情就是发布一条消息,这对我来说似乎不是一个很酷的黑客攻击或类似的东西...... –

+0

嗨,Mattia,我添加了一些信息如果你的密钥泄漏会发生什么。 – JimTheDev

相关问题