【问题标题】:Best practices in sanitizing public facing API?清理面向公众的 API 的最佳实践?
【发布时间】:2013-02-05 23:31:34
【问题描述】:

作为我们服务的一部分,我们正在构建公开可用的 API,让用户可以在我们的平台上执行简单的任务(主要用于自动化目的)(例如评论、关闭已完成的任务和创建新任务)。

API 是基于 HTTPS 的,需要以使用您的登录名和密码调用 /login 的形式进行授权才能接收令牌(可以在您的个人资料中取消验证)。如果需要,我们会使用金字塔、postgresql 和 nginx。

这是我的第一个此类项目,我想知道我应该如何保护这个东西不吃掉我们所有的传输或处理能力(其中一些 API 函数非常繁重)。 我想在一个示例的上下文中考虑它,其中某人在他的脚本(使用我们的 API)中犯了小错误,并且它会在同一任务下每秒发布评论(或列出该任务中的所有 cmets)。 2天。

如果我强制所有读取通过缓存(例如,在接下来的 10 秒内有效),那么它会命中我们的 memcached 服务器而不是 postgres 基础 - 是否足以解决这个问题(所以其他用户不会受影响)还是只是傻?

如果我要检查某种计时器并等待至少 5 秒,然后再进行另一次写入(两次写入之间的时间为 5 秒)- 可以吗,或者我会通过计时器检查来终止我们的服务器?

我想这更多的是关于清理公共 API 的最佳实践的问题,因此它不会咬它的创建者。你是怎么做到的?

【问题讨论】:

    标签: python postgresql nginx memcached pyramid


    【解决方案1】:

    您正在寻找的是rate limiting。如果没有更多关于你的 API 是如何编写的知识,我无法就如何实现它给你具体的建议,但你最好的办法是限制 API 使用者的速率,这样他们就不会对你的服务的其他用户产生不利影响。

    【讨论】:

    • 谢谢,这个词是我需要的关键——我只是用谷歌搜索错了。现在我发现了一些关于 Twitter API 速率限制的文章,听起来很合理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多