我想知道我提议的是我所拥有的系统的典型场景,还是我应该关注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
============== ======= ======= ======= =======
公开我的意思是 ANY 无论是谁,都可以创建一个新成员。但是,一旦创建此记录,只有所有者(为其创建的用户)可以读取或更新它。
我不知道有人如何解决这个创建记录的问题,因为这是通过我网站外部的 javascript 来实现的,我没有控制(客户端)。我无法知道有谁。但是,之后对该成员执行任何操作都需要用户登录我的站点并获得控制权。
我能看到的是为我的用户创建了许多假成员,但我认为没有办法阻止这种行为
有人会这样做不同还是我在想这个?
注意: Python标签已添加,因为它是一个Python API,这可能会有所不同。作为客户端添加的Javascript标记是脚本。如果没有或没有主题,请删除标签或问题。
答案 0 :(得分:3)
系统中没有任何固有的缺陷,但这并不是无法避免的。例如,如果某人是好的,他们可以伪造一个IP地址,所以如果你看到的只是IP地址,就可以从一台计算机上创建多个帐户。如果此人可以使用虚假身份识别,则很难阻止多个帐户,但您可能尝试识别可能发出虚假用户信号的活动或缺乏活动。打击假用户安全问题的最佳方法可能是让用户也必须提供电子邮件地址等信息,并限制一个电子邮件地址下的用户数量。这应该会显着减缓任何问题。如果你让它们“跳过篮球”,如果有人试图伪造帐户,那么伪造和易于追踪会变得更加困难。如果您希望用户更加匿名,那么任何无法以电子方式创建或管理用户的内容都会有所帮助,因此像验证码这样的东西会有所帮助。