【问题标题】:Protect my Django REST API (basic Authentication or anything else)保护我的 Django REST API(基本身份验证或其他)
【发布时间】:2013-05-20 11:14:42
【问题描述】:

我正在努力保护我的 Django restful api。
我有两个客户:

  • 我的 Django 前端应用程序(我的服务器上的 Ajax 请求)
  • 使用 httplib 发出自己的请求的 python 应用程序

现在我使用 HTTP 基本身份验证来允许客户端使用资源。 管理 cookie 会话的身份验证方法上的基本用户名/密码。 在生产中,我确保我的 API 只能通过 https 使用。

我尝试实现 HMAC 构造(因为我不想将密码放在网络上,但我必须在两端存储秘密)。这适用于我的其他 python 应用程序,但不适用于我的 Django 前端应用程序,因为任何用户都可以看到 javascript 代码。

我尝试实现其他身份验证方法,因为我不想真正维护会话状态(不是真正的 REST)。

curl -H "PERSONAL_SECRET_API_KEY: TokenKeyxxxxxxxxxx" https://localhost:8000/api/resource/

这是我的问题:

  • 基本身份验证系统的弱点是什么?
  • 还有其他适合我的方法吗?

谢谢

【问题讨论】:

  • 我建议你看看 django-rest-framework.org 提供了很多很棒的身份验证选项,可以帮助你专注于应用程序的其他部分。

标签: django api rest basic-authentication


【解决方案1】:
  1. 在我看来,容易受到重复攻击是基本身份验证的最大弱点。
  2. 您是否考虑过公钥/私钥基础架构?客户端应用程序创建公钥/私钥对。公钥存储在服务器上。客户端应用使用私钥对其请求进行加密,服务器可以使用客户端应用的公钥对其进行解密并以相同的方式发送响应。

【讨论】:

  • 1.所以如果我使用 CSRF 令牌,我会受到重放攻击的保护吗? 2.“客户端应用程序使用私钥加密其请求”
  • 1.如果有人伪造 CSRF 令牌并捕获用户名和密码,那么您仍然容易受到攻击。 2. 你是对的。在这种情况下,它将不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 2013-06-06
相关资源
最近更新 更多