允许公共创建操作风险的 API 授权
API Authorization Allowing Public Create Actions Risks?
我想知道我提出的是我拥有的系统的典型场景,还是我应该关注的关于 API 安全性的事情。
该系统是一个小部件,可以放置在任何网站上,允许通过API将成员添加到我的一个用户活动中。
Member Name
Member ID
Who the Member belongs to (user ID)
我有一个名为成员的 API 资源。每个成员都属于我的系统的一个用户。
我已经创建了如下表所示的授权。注意:通过授权,我的意思是"是否授予该用户执行此操作的权限",不要将其与身份验证(即访问 API)混淆):
============== ======= ======= ======= =======
Resource Create Read Update Delete
============== ======= ======= ======= =======
Member Public Owner Owner No
============== ======= ======= ======= =======
我所说的公开是指任何人都可以创建一个新成员,无论有谁。但是,创建此记录后,只有所有者(为其创建记录的用户)可以读取或更新它。
我看不出有人如何解决创建记录公开的问题,因为这是通过我网站外部的 javascript 发生的,我无法控制(客户端)。我没有办法知道是谁。但是,在之后对该成员执行任何操作都需要用户登录到我的网站并获得控制权。
我可以看到发生的事情是为我的用户创建了很多虚假成员,但我认为无法阻止这种情况
有人会这样做不同还是我想太多了?
注意:添加了 Python 标签,因为它是一个 Python API,也许这会有所作为或不产生影响。 作为客户端添加的 Javascript 标签是脚本。如果没有或偏离主题,我将删除标签或问题。
该系统没有任何固有的缺陷,但并非无法规避。例如,如果某人很好,他们可以伪造一个 IP 地址,因此如果您只查看 IP 地址,则可以从一台计算机创建多个帐户。如果该人可以使用虚假身份证明,则很难防止多个帐户,但您可以尝试识别可能向虚假用户发出信号的活动或缺乏活动。解决虚假用户安全问题的最佳方法可能是让用户也必须提供电子邮件地址等信息,并限制一个电子邮件地址下的用户数量。这应该会大大减缓任何问题。如果你让他们"跳过箍",如果有人试图伪造账户,伪造就会变得更加困难,并且更容易追踪。如果您希望用户更加匿名,那么任何无法以电子方式创建或管理用户的行为都会有很大帮助,因此像验证码这样的东西会有所帮助。
- Twitter API在jQuery AJAX中设置授权头
- Visual Studio Team Services Rest API未授权的客户端错误
- 授权客户端JS API调用Google'的具有现有访问令牌的gap库
- 如何在带有JQuery的Neo4j 2.2.x中使用事务Cypher HTTP端点和新的REST API身份验证和授权
- 使用JavaScript的Google API授权
- 允许公共创建操作风险的 API 授权
- Google Analytics API OAuth 2.0 授权,不带弹出窗口
- 使用 Meteor HTTP 在 Spotify API 上请求access_token时不受支持的授权类型错误
- 如何在更少的 SQL 查询中执行复杂的 API 授权
- 如何在本地主机上授权必应翻译 API
- REST API:基于用户代理的客户端(应用)授权
- 如何限制API只能访问使用Express.js的授权域
- Google Analytics API-分析属性授权
- Facebook JS API上的评论权限错误,尽管我有授权
- Google API客户端ID不是't授权
- 使用Google日历API返回401(未经授权)
- Javascript中Amazon Api授权中的SHA-1
- IE9中LinkedIn Javascript API授权失败
- Google API:授权的JavaScript起源
- 我的应用程序的Twitter api授权