无需身份验证的 Django Rest Framework + 仅获取
Django Rest Framework without authentication + GET only
我正在使用 Django Rest Framework 开发网页后端。该网页将是 public,它只会从此服务中获取信息。因此,我必须同时部署服务和网页。
由于网页是 public 访问(无需任何类型的登录),因此我可以避免设置 SSL 内容。但是,默认情况下,DRF 带有可浏览的 API 和登录字段。我知道我可以删除可浏览的 API,但这够了吗?
例如,我的配置是:
(移除可浏览API渲染器)
'DEFAULT_RENDERER_CLASSES': ( 'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.JSONPRenderer',
'rest_framework_csv.renderers.CSVRenderer', )
和:
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_METHODS = (
'GET',
'HEAD',
'OPTIONS',
)
我正在使用 https://github.com/ottoyiu/django-cors-headers 来处理 CORS 内容。
这是否足以避免不必要的登录尝试?有什么具体方法可以禁用这个选项吗?
我应该使用什么'DEFAULT_PERMISSION_CLASSES'?
致以最诚挚的问候,感谢您的帮助!
如果您有登录名,但没有 SSL,那么您的用户很容易受到许多 wifi 和以太网网络上凭证数据包嗅探的攻击。 Firesheep firefox 插件可以轻松利用此类漏洞。由于用户有重复使用密码的习惯,您最终可能会危及到更关键的网站的安全。这是非常不幸的。如果用户重复使用他们的密码,这不完全是您的问题,但 SSL 应该是您用户的基础保护层。
虽然可以将 Django 模板与 Django Rest Framework (DRF) 一起用作后端,但您并不局限于将 Django 用作前端。 Consider AngularJS with DRF. 无论如何,AngularJS 有一个重要的学习曲线,但您不必局限于让 Django 提供您的前端。
就删除 DRF BrowsableAPIRenderer
而言,您将从 "security through obscurity" 获得一些保护,但您确实需要通过适当的权限模型锁定您的 API,因为攻击者可以轻松查看前端生成的流量到后端,然后处理对后端的请求。因此,通过删除 BrowsableAPIRenderer
不会显着降低对手发现您的界面的可能性。它只会掩盖您的前端当前未使用的后端资源,并且还会使您作为前端开发人员的生活更加痛苦。
对于 DEFAULT_PERMISSION_CLASSES
,看看 DRF permissions documentation. If you only have two user groups - logged in/authenticate and not logged in, then IsAuthenticatedOrReadOnly
是一个很好的起点。如果您开始对不同的用户组进行每个模型的权限分叉,那么
DjangoModelPermissions
是个值得深挖的好地方。
我正在使用 Django Rest Framework 开发网页后端。该网页将是 public,它只会从此服务中获取信息。因此,我必须同时部署服务和网页。
由于网页是 public 访问(无需任何类型的登录),因此我可以避免设置 SSL 内容。但是,默认情况下,DRF 带有可浏览的 API 和登录字段。我知道我可以删除可浏览的 API,但这够了吗?
例如,我的配置是:
(移除可浏览API渲染器)
'DEFAULT_RENDERER_CLASSES': ( 'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.JSONPRenderer',
'rest_framework_csv.renderers.CSVRenderer', )
和:
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_METHODS = (
'GET',
'HEAD',
'OPTIONS',
)
我正在使用 https://github.com/ottoyiu/django-cors-headers 来处理 CORS 内容。
这是否足以避免不必要的登录尝试?有什么具体方法可以禁用这个选项吗?
我应该使用什么'DEFAULT_PERMISSION_CLASSES'?
致以最诚挚的问候,感谢您的帮助!
如果您有登录名,但没有 SSL,那么您的用户很容易受到许多 wifi 和以太网网络上凭证数据包嗅探的攻击。 Firesheep firefox 插件可以轻松利用此类漏洞。由于用户有重复使用密码的习惯,您最终可能会危及到更关键的网站的安全。这是非常不幸的。如果用户重复使用他们的密码,这不完全是您的问题,但 SSL 应该是您用户的基础保护层。
虽然可以将 Django 模板与 Django Rest Framework (DRF) 一起用作后端,但您并不局限于将 Django 用作前端。 Consider AngularJS with DRF. 无论如何,AngularJS 有一个重要的学习曲线,但您不必局限于让 Django 提供您的前端。
就删除 DRF BrowsableAPIRenderer
而言,您将从 "security through obscurity" 获得一些保护,但您确实需要通过适当的权限模型锁定您的 API,因为攻击者可以轻松查看前端生成的流量到后端,然后处理对后端的请求。因此,通过删除 BrowsableAPIRenderer
不会显着降低对手发现您的界面的可能性。它只会掩盖您的前端当前未使用的后端资源,并且还会使您作为前端开发人员的生活更加痛苦。
对于 DEFAULT_PERMISSION_CLASSES
,看看 DRF permissions documentation. If you only have two user groups - logged in/authenticate and not logged in, then IsAuthenticatedOrReadOnly
是一个很好的起点。如果您开始对不同的用户组进行每个模型的权限分叉,那么
DjangoModelPermissions
是个值得深挖的好地方。