oauth - 为什么不鼓励前端的 OAuth key ?

标签 oauth google-oauth electron twitter-oauth facebook-oauth

我正在开发一个应用程序,它将使用社交登录以便在 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/

相关文章:

oauth - Spring Security OAuth 2 隐式授权 - 不支持刷新 token

Asp.net core 使用Facebook外部登录时redirect_url错误

google-drive-api - 在 Google Colab 中安装 Google Drive 的持久授权

azure - 访问 token 来自错误的颁发者 'https://sts.windows.net'

selenium - 使用Spectron或 Selenium 测试基于 Electron 的应用程序,从cmd启动Electron需要通过参数,如何通过参数?

authentication - 将 OAuth 用于使用我自己的 API 的移动设备和网站的正确方法是什么?

java - Keycloak:调用管理员 rest api 时无法将用户领域角色读取为管理员 cli

api - OAuth v2 (Google API) 过期访问 token

google-oauth - 如何判断用户使用的是 Google 帐户还是 G Suite for Education 帐户?

node.js - Nightmarejs屏幕分辨率