我正在建立一个项目,在该项目中我将能够保存API密钥,然后该密钥将用于在我的网站上执行一些操作。
很显然,除了我的代码将使用这些键执行某些任务之外,没有人可以访问该键。
实际上,密钥存储在我的数据库中,并且没有进行加密,但是现在我想使该系统尽可能安全,以便即使有人可以访问我的凭据,他也无法使用它。
问题是我对安全性和加密不了解。我的第一个想法是加密密钥,但是我真的不知道该怎么做。
基本上,这就是它的工作方式:密钥是使用表单提交的->密钥必须加密并保存在我的数据库中->稍后,当我需要执行任务时,这些密钥应该按顺序解密做我需要的事
我的方法正确吗?而我该如何在Django中完成呢?
这是我当前的视图:
def homepage(request):
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = ApiForm(request.POST)
# check whether it's valid:
if form.is_valid():
# process the data in form.cleaned_data as required
send = form.save()
send.save()
messages.success(request, f"Success")
else:
form = ApiForm()
return render(request,
"main/home.html",
context={"form":form})
这是表格:
class ApiForm(forms.ModelForm):
key = forms.CharField(widget=forms.TextInput(
attrs={
'placeholder': 'Enter here your api key',
}
), #max_length=9
)
secret = forms.CharField(widget=forms.TextInput(
attrs={
'placeholder': 'Enter here your secret key',
}
),
)
class Meta:
model = MyModel
fields = ("key", "secret")
def save(self, commit=True):
send = super(ApiForm, self).save(commit=False)
if commit:
send.save()
return send
请记住,这些API密钥将由将执行某些操作的外部Python scrypt使用,因此它们需要由该脚本解密。