与许多与安全相关的问题一样,这是一个微妙的答案——kolossus 提供了一个很好的概述。
它有助于了解攻击者可能如何破坏您的 API,以及发生了多少安全漏洞。
大多数安全漏洞都是由错误或疏忽引起的,攻击者会寻找这些。试图破坏您的 API 的攻击者首先会尝试收集有关它的信息 - 因为它是一个 API,所以您可能会发布详细的使用文档。攻击者将使用此文档,并尝试许多不同的方法来使您的站点崩溃(如果幸运的话,从而暴露更多信息),或者以您未预料到的方式做出反应。
你必须假设攻击者有很多时间,并且会编写他们的攻击脚本以尝试每条途径 - 就像一个有无限时间的窃贼,他在你的房子里走来走去尝试每一扇门和窗户,并且从每次尝试中学习的开锁器。
因此,如果您的 API 公开了类似的方法getUserInfo(userid)
,并且 userID 是一个整数,那么攻击者将编写一个脚本从 0 向上迭代以找出您有多少用户。他们会尝试负数,并且max(INT) + 1
. 在所有这些情况下,您的应用程序都可能泄漏信息,并且 - 如果开发人员忘记处理某些错误 - 可能会暴露比您预期更多的数据。
如果您的 API 包含限制对某些数据的访问的逻辑 - 例如,您可以getUserInfo
为好友列表中的用户执行 - 攻击者可能会因为错误或疏忽而幸运地获得一些数字,并且他会知道这些信息他正在与一个有效的用户建立联系,因此他们可以建立一个应用程序设计方式的模型。这相当于一个窃贼知道你所有的锁都来自一个制造商,所以他们只需要带上那个开锁器。
就其本身而言,这可能对攻击者没有任何好处 - 但它会让他们的生活变得更轻松。
考虑到使用 UUID 或其他无意义的标识符的努力,可能值得让攻击者更加困难。当然,这不是最重要的考虑因素——它可能不会成为保护 API 免受攻击者应该做的前 5 件事——但它会有所帮助。