我创建了一个仅用于get请求的REST API,并向前端提供数据。
我的朋友正在构建前端。
现在,任何人都可以通过查看网络选项卡访问api端点,但是我想限制对我朋友正在构建的前端的访问。该网站不需要登录系统(最初),但将来可能会有。
我读过令牌和密钥,但似乎这些信息将显示在浏览器中,我认为这将很容易逆向工程。
那么我应该如何保护API以限制scraper或任何恶意访问的方式?
谢谢。
从Flask迁移到社区对安全性有更多支持的框架可能是最容易保护API的。
Django有一个很棒的包Django -oauth2-provider,它可以让你保护你的应用程序,就像大公司保护他们的应用程序一样。学习RFC 6749中提出的底层体系结构需要时间,但了解如何在浏览器中防止反向工程令牌问题可能会对您感兴趣。
该协议允许通过web进行安全授权和身份验证,尽管从浏览器可以观察到客户端数据传输,但需要在用户和服务器之间握手。
限制现有应用程序的一个合理的起点可能是在它前面添加一个代理,要求在header中添加Basic Authorization Token
。这可以通过反向代理如Apache2或Nginx来完成。下面是官方的Apache2规范:http://doc.norang.ca/apache-basic-auth.html.
甚至可能有已经存在的包来限制访问你的Flask应用程序,你可以实现自己的代码来保护你的应用程序,但这是一个常见的问题,以前已经解决了,所以为什么不利用可用的?