用加密字符串替换rest框架的integerfield pk或id查找。
django-rest-encrypted-lookup的Python项目详细描述
[![PYPI](https://img.shields.io/PYPI/dm/django rest encrypted lookup.svg);
[![构建状态](https://travis-ci.org/intersis/django-rest-encrypted-lookup.svg?branch=master)](https://travis ci.org/intersis/django rest encrypted lookup)
django rest encrypted lookup
==
drop-in-viewsets、serializer和fields,它们用加密的字符串查找替换integerfield pk或id查找。
在整个项目中使用单个密码,或为每个序列化程序、模型、用户和/或客户端提供唯一的密码。
10,
12,
]
}
```
"rqq5a2evfokyo7tz74loiu3bcq",
]
}
`````
>按用户密码选择用户,以便:
````
;用户A获取/api/polls/并接收:
{
"结果":[
"4xoh7gja2mtvz3i47ywy5h6ouu",
"12gc75ggggiwv6cs5zc4mpzeoe",
]
}
```
如果您喜欢超链接相关字段:
```
{
"id":"4xoh7gja2mtvz3i47ywy5h6ouu",
"问题":[
"https://example.com/api/questions/t6y4zo26vutj4xclh5hpy3sc5m/",
"https:"//例如,com/api/api/questions/hp7c75ggggggiw6cs5czc4mzc4mpzeoe/",
"https://www.com/api/api/questions/rqqqq5a2evfokyo7tz74loio3bcq/",
]
`` ` `
终点:
````````````
/api/polls/api/polls/5/
```````
````>```````
>````````````
/br/>/api/polls/4xoh是的i47ywy5h6ouu/
```
加密查找*不*适合用作防止用户猜测对象uri的安全措施。加密的
查找*适合用作混淆对象pks/id的方法。
r"已安装的应用程序":已安装的应用程序=(
…
"rest_framework_encrypted_lookup"、
…
)
````
和设置中的应用程序。py:
````
"encrypted_lookup={
"lookup_field"名称:'id',drf查找字段的字符串值名称,通常为'id'或'pk'
'密钥':'唯一密钥',选择字符串值用于加密查找字段的唯一密钥
},
````
怨恨。在响应合成期间,模型序列化程序生成加密的查找。端点
uri中呈现的加密查找在调度调用中解密,数据字段中呈现的加密查找由模型
反序列化程序解密。
加密由pycrypto aes库提供。
okup提供三个字段类:
from rest\u framework\u encrypted\u lookup。字段导入encrypted lookup field、encrypted lookuprelatedfield、encrypted lookuphyperlinkedrelatedfield
两个新的序列化程序类:
from rest\u framework\u encrypted\u lookup。序列化程序导入EncryptedLookupModelSerializer,加密edlookuphyperlinkedmodelserializer
和一个通用视图类:
#models.py
…
类轮询(models.model):
…
#views.py
…
从rest_framework导入viewsets
类pollviewset(加密的lookupgenericviewset,
viewsets.mixins.listmodelmixin,
viewsets.mixins.retrievemodelmixin,
…
)
queryset=poll.objects.all()
serializer\u class=pollserializer
lookup\u field='id'
````
okupGenericViewSet`.
encryptedLookupField`,`encryptedLookupRelatedField`字段由encryptedLookupModelSerializer隐式使用。如果需要,这些字段也可以显式使用。
类meta:
model=poll
``
在这种情况下,poll serializer将使用"encryptedhyperlinkedlookupprelatedfield"将相关字段序列化为超链接。
默认情况下,每个加密的查找序列化器类将使用相同的cypher。通过覆盖序列化程序的"get-cypher"方法,可以选择非默认的cypher。这里有一个"get-cypher"方法,它将为每个模型生成一个唯一的cypher:
```
来自rest-framework加密查找。utils从rest-framework加密查找导入idcipher
。settings导入加密查找设置
ncryptedlookupmodelserializer):
def get_cipher(self):
返回idcipher(secret=encrypted_lookup_settings['secret_key']+self.meta.model)
````
m rest_framework_encrypted_lookup.utils从rest_framework_encrypted_lookup导入idcipher
假设用户必须登录才能到达此终结点。
*django 1.6,1.7,1.8
*python 2.7,3.3,3.4
>测试的特定小版本见tox.ini。
>附加要求
=======
*django 1.6.1
===
*有帮助的例外。
*覆盖率。
=============
br/>参与
=====
欢迎打开请求或问题。github是此项目的规范位置。
[![构建状态](https://travis-ci.org/intersis/django-rest-encrypted-lookup.svg?branch=master)](https://travis ci.org/intersis/django rest encrypted lookup)
django rest encrypted lookup
==
drop-in-viewsets、serializer和fields,它们用加密的字符串查找替换integerfield pk或id查找。
在整个项目中使用单个密码,或为每个序列化程序、模型、用户和/或客户端提供唯一的密码。
10,
12,
]
}
```
"rqq5a2evfokyo7tz74loiu3bcq",
]
}
`````
>按用户密码选择用户,以便:
````
;用户A获取/api/polls/并接收:
{
"结果":[
"4xoh7gja2mtvz3i47ywy5h6ouu",
"12gc75ggggiwv6cs5zc4mpzeoe",
]
}
```
如果您喜欢超链接相关字段:
```
{
"id":"4xoh7gja2mtvz3i47ywy5h6ouu",
"问题":[
"https://example.com/api/questions/t6y4zo26vutj4xclh5hpy3sc5m/",
"https:"//例如,com/api/api/questions/hp7c75ggggggiw6cs5czc4mzc4mpzeoe/",
"https://www.com/api/api/questions/rqqqq5a2evfokyo7tz74loio3bcq/",
]
`` ` `
终点:
````````````
/api/polls/api/polls/5/
```````
````>```````
>````````````
/br/>/api/polls/4xoh是的i47ywy5h6ouu/
```
加密查找*不*适合用作防止用户猜测对象uri的安全措施。加密的
查找*适合用作混淆对象pks/id的方法。
r"已安装的应用程序":已安装的应用程序=(
…
"rest_framework_encrypted_lookup"、
…
)
````
和设置中的应用程序。py:
````
"encrypted_lookup={
"lookup_field"名称:'id',drf查找字段的字符串值名称,通常为'id'或'pk'
'密钥':'唯一密钥',选择字符串值用于加密查找字段的唯一密钥
},
````
怨恨。在响应合成期间,模型序列化程序生成加密的查找。端点
uri中呈现的加密查找在调度调用中解密,数据字段中呈现的加密查找由模型
反序列化程序解密。
加密由pycrypto aes库提供。
okup提供三个字段类:
from rest\u framework\u encrypted\u lookup。字段导入encrypted lookup field、encrypted lookuprelatedfield、encrypted lookuphyperlinkedrelatedfield
两个新的序列化程序类:
from rest\u framework\u encrypted\u lookup。序列化程序导入EncryptedLookupModelSerializer,加密edlookuphyperlinkedmodelserializer
和一个通用视图类:
#models.py
…
类轮询(models.model):
…
#views.py
…
从rest_framework导入viewsets
类pollviewset(加密的lookupgenericviewset,
viewsets.mixins.listmodelmixin,
viewsets.mixins.retrievemodelmixin,
…
)
queryset=poll.objects.all()
serializer\u class=pollserializer
lookup\u field='id'
````
okupGenericViewSet`.
encryptedLookupField`,`encryptedLookupRelatedField`字段由encryptedLookupModelSerializer隐式使用。如果需要,这些字段也可以显式使用。
类meta:
model=poll
``
在这种情况下,poll serializer将使用"encryptedhyperlinkedlookupprelatedfield"将相关字段序列化为超链接。
默认情况下,每个加密的查找序列化器类将使用相同的cypher。通过覆盖序列化程序的"get-cypher"方法,可以选择非默认的cypher。这里有一个"get-cypher"方法,它将为每个模型生成一个唯一的cypher:
```
来自rest-framework加密查找。utils从rest-framework加密查找导入idcipher
。settings导入加密查找设置
ncryptedlookupmodelserializer):
def get_cipher(self):
返回idcipher(secret=encrypted_lookup_settings['secret_key']+self.meta.model)
````
m rest_framework_encrypted_lookup.utils从rest_framework_encrypted_lookup导入idcipher
假设用户必须登录才能到达此终结点。
*django 1.6,1.7,1.8
*python 2.7,3.3,3.4
>测试的特定小版本见tox.ini。
>附加要求
=======
*django 1.6.1
===
*有帮助的例外。
*覆盖率。
=============
br/>参与
=====
欢迎打开请求或问题。github是此项目的规范位置。