Я строю проект, в котором я смогу сохранить ключ API, затем этот ключ будет использоваться для выполнения некоторых операций на моем сайте с внешнего бота Python.
Очевидно, что никто не долженполучить доступ к ключу, кроме моего кода, который будет выполнять некоторые задачи с использованием этих ключей.
В настоящий момент ключи хранятся в моей базе данных и не зашифрованы, но теперь я хотел бы сделать эту систему максимально безопасной, чтобы даже если кто-то имел доступ к моим учетным данным, онЯ не могу его использовать.
Проблема в том, что я очень мало знаю о безопасности и защите.Моей первой мыслью было зашифровать ключи, но я не знаю, как это сделать.
По сути, так оно и должно работать: ключи отправляются с использованием формы -> ключи должны быть зашифрованы и сохранены в моей БД -> позже, когда мне нужно выполнить задачу, эти ключи должны бытьрасшифровывать, чтобы сделать то, что мне нужно
Правильно ли подходит мой подход?И как я могу сделать это в Джанго?
Вот мой текущий взгляд:
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, который будет выполнять некоторые операции, поэтому они должны быть расшифрованы этим сценарием.