3 回答
TA贡献1804条经验 获得超7个赞
你是对的,保护你的 API 对你来说毫无意义。仅在某些情况下才需要保护 API。
如果您正在访问不希望任何人看到的数据,也许是通过后端调用,那么添加某种形式的安全性(通常是请求标头中的 API 密钥或授权令牌)是有意义的。
但是,如果您从前端(即客户端)调用后端 API,那么在那里设置额外的安全性是没有意义的,因为用户已经可以看到请求并且已经可以访问 API 返回的数据- 因此,通过保护它,您将一事无成。
通常,如果用户正在访问的页面包含您不希望每个人都看到的敏感数据,您将采取措施来保护您的网站(例如,在您访问该页面之前,使用用户名和密码登录来保护它) . 如果您采用这种方法,网站受用户名和密码保护,那么您可以更新 API 以确保它不会响应用户未通过身份验证的请求(例如通过生成会话令牌或某些独特的东西)每个登录的用户)。
如果您环顾拥有大量免费数据的网站,您会发现它们都有完全不安全的前端 API 调用(因为如果数据已经可以免费访问则毫无意义)。有些网站采取措施,以尽量确保这是他们自己的网站正在调用的API,但即使如此,这是一个有点毫无意义的网络铲运机始终能够从HTML中提取数据。
TA贡献1851条经验 获得超5个赞
查看此页面,其中概述了身份验证标头。这种更简单的方法是在 Flask 中对标头信息进行硬编码,以使其更加安全。您还可以尝试从数据库读取标题信息的更复杂的路线。目前我从 postgres db 中读取的内容如下,因此您可以为 sqlite 稍微修改它。
def valid():
headers = request.headers
auth = headers.get("X-Api-Key")
user = User.query.filter_by(apikey=auth).first_or_404()
print('from search of db ',user,'',auth)
return str(user)
添加回答
举报