【发布时间】:2013-11-30 08:19:33
【问题描述】:
我想知道我所提议的是我所拥有的系统的典型场景,还是我应该关注的关于 API 安全性的事情。
该系统是一个小部件,可以放置在任何网站上,允许通过 API 将成员添加到我的一个用户活动中。
Member Name
Member ID
Who the Member belongs to (user ID)
我有一个名为 members 的 API 资源。每个成员都属于我系统的一个用户。
我创建了如下表所示的授权。 注意:授权是指“授予该用户执行此操作的权限”,不要将其与身份验证(即访问 API)混淆:
============== ======= ======= ======= =======
Resource Create Read Update Delete
============== ======= ======= ======= =======
Member Public Owner Owner No
============== ======= ======= ======= =======
公开我的意思是任何无论是谁都可以创建一个新成员。但是,一旦创建此记录,只有所有者(创建它的用户)才能读取或更新它。
我看不出有人如何解决 create 记录公开这一问题,因为这是通过我无法控制的站点外部的 javascript 发生的(客户端)。我没有办法知道是谁。但是,之后对该成员进行任何操作都需要用户登录到我的站点并获得控制权。
我可以看到正在为我的用户创建大量假会员,但我认为无法阻止这种情况
会有人这样做吗?还是我想太多了?
注意: 添加 Python 标记是因为它是 Python API,也许这会有所不同。作为客户端添加的 Javascript 标记是脚本。如果不是或偏离主题,我将删除标签或问题。
【问题讨论】:
-
如果您唯一的选择是通过客户端创建成员,那么我认为您的选择是可以的。您只需要限制可以从同一 IP 创建的用户数量,并删除那些在 48-72 小时内未登录的用户。至少那是我会做的。运行一个 cron 作业,删除所有在一定时间内从未登录的人(可能是假成员),并将每个 IP 的成员数量限制为,比如说 - 10。这样你就不会被脚本小子通过 JS 发送垃圾邮件控制台,但您可以让同一网络 (IP) 中的人们在需要时创建几个帐户。
-
@Fratyr 感谢您的回复。老实说,这是我能想到的唯一选择,但我愿意接受其他建议。验证匿名用户确实是我要问的,但那有什么意义呢?
标签: javascript python api security