我正在使用 Django Rest Framework 和 token 身份验证。到目前为止一切都很顺利。
http://www.django-rest-framework.org/api-guide/authentication#tokenauthentication
但我意识到任何人都可以创建一个与我的 API Hook 的第三方应用程序。我无法检测或阻止它。
我错过了什么吗?我按照指示进行操作,并且:
- 发送“用户名=blah&密码=blah”至https://example.com/api/auth/ ,并收到一个 Token 作为返回。任何人都可以通过第三方应用程序执行此操作。
- 该 token 在身份验证 header 中传递以从 API 检索数据。如果拥有用户 token ,任何人都可以执行此操作。
即使用户知道自己的Token,我也只希望他们能够通过官方原生应用访问API。
<强>1。如何保护我的 API(使用 token 身份验证)并确保只有我的应用程序可以连接到它?
<强>2。我可以在 header 中包含某种 key 吗?我在生产中使用 HTTPS, header 以及表单数据(用户名/密码)是否可拦截/可读? (由运行应用程序的人)。
还在学习中,谢谢。
最佳答案
也许我不完全理解你的问题,但是:
是的,应用程序中拥有用户名和密码的每个人都可以创建 token ,如果您将 obtain_auth_token
添加到您的 urlconfig(您的不必)。
所以你可以:
- 仅提供您的应用用户名和密码
- 或停用
obtain_auth_token
View 并在管理员中或手动创建 token 。
回答您的 HTTPS 问题:
HTTPS 加密位于客户端和服务器之间,并且位于 TCP 和 HTTP 之间。因此,中间的每个人(中间的人)都看不到任何 header 、数据,甚至路径。当使用SNI时主机名(Host
header )可见,但没有其他内容。
希望这会有所帮助。
关于Django Rest Framework - 阻止访问 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24171906/