如何使用和保护Web API以防止被公共用户滥用?

时间:2019-05-12 13:42:53

标签: asp.net-mvc asp.net-web-api redis

我们想添加Redis缓存以缩短响应时间

我们有一个MVC网站,用户可以在其中设置其配置。之后,系统会生成一个公共URL,其他人可以在其中访问我们使用WebApi配置的客户端。 其中一些公共链接将使用2-3次,而其他一些将一直使用。

要保存数据库调用,我们要使用Redis作为缓存。当第一个调用被重做到Redis时,我看到了一些代码示例;如果该实体不在缓存中,则它们将转到DB。

  1. 这是一个公共API,这意味着某个地方的某人将尝试扫描此API。如何保护不在缓存中的项目被重复调用到数据库的API? 可以说API URL看起来像:https://api.example.com/getinfo/1,有人会创建对https://api.example.com/getinfo/2 https://api.example.com/getinfo/3的http调用,依此类推...该API调用不在缓存中(甚至不存在)并进行查询数据库。因此,如果我运行数千个API调用,每个请求都会查询数据库? 到目前为止,我们使用了内存缓存,该缓存每15分钟自动刷新一次。如果请求不在高速缓存中,则没有数据库调用。但这不是可扩展的

  2. 每当我们的用户使用新数据更新其Web界面时,我们也应该更新Redis缓存吗?应该使用EF实体还是更好地为我们存储在Redis上的每个实体创建自定义实体?

3。与多租户一起工作时,我们最好为每个租户提供redis缓存,或者按键逻辑地缓存吗?

0 个答案:

没有答案