为了账号安全,请及时绑定邮箱和手机立即绑定

Flask API 为简单的 HTML+JS+CSS 网络应用程序提供 JSON 文件

Flask API 为简单的 HTML+JS+CSS 网络应用程序提供 JSON 文件

动漫人物 2021-12-02 15:44:58
我制作了一个简单的 web 应用程序,它将在表格中显示一些数据,该表格每周更新一次。这个更新是在后端用一些 python 代码完成的,在将它放入 SQLite 数据库之前,它会刮取和更改一些数据。在做了一些阅读之后,我了解到要将这些数据传送到我的 web 应用程序,我应该使用 Flask 制作一个 API,它可以获取该数据并将其以 JSON 的形式传送到我的 webapp 中的 JS,然后可以使用这些数据来填充桌子。但是,我应该使用用户名和密码保护我的 API。但作为一个从 API 检索数据的 JS 前端,真的没有意义,因为用户名和密码必须硬编码到 JS 中,然后用户才能读取。(我认为)我应该向所有人公开我的 API,或者这不是能够使用 SQLite 数据作为我的 web 应用程序后端的方法吗?我可以只将 API 保留为 GET。
查看完整描述

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

你是对的,保护你的 API 对你来说毫无意义。仅在某些情况下才需要保护 API。

如果您正在访问不希望任何人看到的数据,也许是通过后端调用,那么添加某种形式的安全性(通常是请求标头中的 API 密钥或授权令牌)是有意义的。

但是,如果您从前端(即客户端)调用后端 API,那么在那里设置额外的安全性是没有意义的,因为用户已经可以看到请求并且已经可以访问 API 返回的数据- 因此,通过保护它,您将一事无成。

通常,如果用户正在访问的页面包含您不希望每个人都看到的敏感数据,您将采取措施来保护您的网站(例如,在您访问该页面之前,使用用户名和密码登录来保护它) . 如果您采用这种方法,网站受用户名和密码保护,那么您可以更新 API 以确保它不会响应用户未通过身份验证的请求(例如通过生成会话令牌或某些独特的东西)每个登录的用户)。

如果您环顾拥有大量免费数据的网站,您会发现它们都有完全不安全的前端 API 调用(因为如果数据已经可以免费访问则毫无意义)。有些网站采取措施,以尽量确保这是他们自己的网站正在调用的API,但即使如此,这是一个有点毫无意义的网络铲运机始终能够从HTML中提取数据。


查看完整回答
反对 回复 2021-12-02
?
江户川乱折腾

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)


查看完整回答
反对 回复 2021-12-02
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

  1. 正如您所提到的,您计划显示公共数据 - 即使没有身份验证也可以使用它。否则,我认为可能会花费太多不必要的时间。

  2. 由于您只有一个简单的数据库表,我相信您不需要 API。您可以创建 HTML 模板并使用数据呈现它。一些例子可以在这里找到几个在这里


查看完整回答
反对 回复 2021-12-02
  • 3 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信