使用以下方法创建节点JS API应用程序: https://github.com/spoonx/wetland
保护该API我认为我会为每个用户分配一个API密钥,但是我想到的一个问题是恶意用户有时可能获得其他用户的API密钥而且他可以使用该API。
所以我的问题是如何为所有这些黑客保护我的API?
答案 0 :(得分:2)
如果需要,可以通过多种方式锁定API,请记住添加的安全性越高,通常最终用户使用API的难度就越大。
IP地址锁定
您可以为每个用户分配IP地址并将其存储在数据库中。在您的身份验证中间件中,一旦用户使用其API密钥进行了成功验证,您将使用 public class FilterModel
{
public string Filter { get; set; }
}
检查其请求的IP。如果IP匹配,则允许连接,否则拒绝连接。
JSON网络代币
您可以使用的第二件事是JWT,它们是可用于验证用户身份的无状态对象。这是一种更安全的API实现方式。你可以阅读它here
使用HTTPS
使用HTTPS将确保没有人能够嗅探(MiTM)api密钥以及随请求发送的任何其他信息。使用HTTPS将在应用程序的顶部添加额外的安全层,这将使恶意行为者更难获得对api密钥的访问权。
请记住,所有这些解决方案都可以为您的令牌/ api密钥提供更高的安全性,但如果您的某个用户去了并公开了他们的API密钥,那么您将需要撤销该API密钥并生成一个新密钥,或者完全删除那个 因此,我建议将API密钥与用户一起存储在数据库中,以便您可以轻松地为特定用户撤消或重新生成API密钥。如果未实现IP地址锁定,您还应该保留api请求的日志,以便检测异常流量或来自未知来源的流量。