Чување приватних кључева ван складишта кодова је од виталног значаја за безбедност. Сазнајте како то учинити и како се опоравити ако сте већ направили грешку.
У Дјангу, тајни кључ игра виталну улогу у побољшању безбедности ваше апликације. Помаже у управљању корисничким сесијама, штити од напада фалсификовања захтева са више локација (ЦСРФ) и штити ваше податке генерисањем и верификацијом криптографских потписа између осталог.
Тајни кључ вашег пројекта треба да буде сигуран у сваком тренутку. Ако га изложите, ваша апликација ће бити подложна злонамерним нападима хакера, угрожавајући њену безбедност. Ако ваш тајни кључ буде компромитован, требало би да знате како да генеришете нови да бисте смањили негативан утицај на вашу апликацију.
Како се ваш Дјанго тајни кључ може открити?
Можете случајно учинити свој Дјанго тајни кључ јавним ако га несвесно предате у гит или слично спремиште изворног кода. Ова грешка је уобичајена међу новим програмерима који су још увек учење о ГитХуб-у. Када се то догоди, можете да урадите једно од следећег:
- Избришите урезивање.
- Замените тајни кључ у потпуности.
Брисање урезивања можда није најбоља опција јер се историји урезивања и даље може приступити на различите начине, као што су кеширане копије на ГитХуб-у или другим дистрибуираним системима. Најсигурније у таквој ситуацији је претпоставити да је ваш тајни кључ већ компромитован.
Требало би да генеришете нови тајни кључ да бисте заменили компромитовани и заштитили га коришћењем променљивих окружења. У сваком случају, требало би да научите како да генеришете нови тајни кључ у Дјангу да бисте заштитили своју апликацију од ствари као што су Напади фалсификовања захтева на више локација (ЦСРФ)..
Како генерисати нови тајни кључ у Дјангу
Дјанго обезбеђује функцију тзв гет_рандом_сецрет_кеи() који вам помаже да генеришете нови тајни кључ кад год га позовете. Функција гет_рандом_сецрет_кеи() је услужна функција која користи тајне модул у Питхон-у за генерисање безбедног тајног кључа од 50 знакова.
Да бисте генерисали нови тајни кључ са функцијом гет_рандом_сецрет_кеи(), отворите свој Интерфејс командне линије (ЦЛИ) и откуцајте ову команду:
питхон манаге.пи схелл -ц "из дјанго.цоре.манагемент.утилс импорт гет_рандом_сецрет_кеи; принт (гет_рандом_сецрет_кеи())"
Горња команда увози функцију гет_рандом_сецрет_кеи(). дјанго.цоре.манагемент.утилс а затим одштампа нови тајни кључ од 50 знакова, који можете користити у свом пројекту. Пре него што покренете горњу команду, уверите се да сте у основном директоријуму вашег пројекта, тј. на истој локацији као и управљај.пи датотеку у свом пројекту.
Можете да покренете исту команду ван свог ЦЛИ тако што ћете креирати Питхон датотеку и налепити овај исечак кода у њу:
# увозите функцију гет_рандом_сецрет_кеи().
из дјанго.цоре.манагемент.утилс увоз гет_рандом_сецрет_кеи
тајни_кључ = гет_рандом_сецрет_кеи()
штампа (тајни_кључ)
Можете покренути код тако што ћете уписати ово у свој ЦЛИ:
питхон филеНаме.пи
Горња команда би требало да одштампа нови тајни кључ од 50 знакова који можете да користите у свом пројекту.
Како заштитити свој тајни кључ помоћу варијабли окружења
Вероватно не желите да мењате свој тајни кључ сваки пут када извршите ГитХуб урезивање. Ефикасан начин да сачувате свој тајни кључ безбедним је чување у променљивој окружења. Променљиве окружења су вредности које можете подесити ван своје базе кода, којима ваш програм и даље може да приступи током времена извршавања. Они могу да чувају конфигурацију, АПИ кључеве, акредитиве базе података итд.
Можете да ускладиштите своје променљиве окружења у датотеци под називом .енв и искључите их из вашег гит спремишта. То можете учинити креирањем датотеке под називом .гитигноре у вашем пројекту. Датотека .гитигноре садржи листу датотека и фасцикли које Гит неће пратити.
Типови датотека и структуре директоријума варирају од пројекта до пројекта, али постоје разумне подразумеване вредности које можете применити за сваки језик. Можете пронаћи листу .гитигноре шаблона у ГитХуб-ово гитигноре спремиште. Следећи кораци вам показују како да користите датотеку .гитигноре са променљивим окружења у Дјангу.
1. Направите .гитигноре датотеку
У вашем основном директоријуму—локацији вашег управљај.пи фајл—креирајте а .гитигноре датотеку и копирајте садржај овог ГитХуб датотека у то. Та датотека је пример .гитигноре-а за Питхон пројекте који искључује уобичајене датотеке које не желите у свом спремишту.
Алтернативно, можете додати .гитигноре датотеку свом пројекту док креирате спремиште на ГитХуб-у. Да бисте то урадили, кликните на Додајте .гитигноре опцију, потражите Питхон и изаберите је.
2. Направите .енв датотеку
У свом основном директоријуму креирајте датотеку под називом .енв. Ова датотека ће чувати све ваше променљиве окружења. Копирајте и налепите свој тајни кључ у ову датотеку (уклоните наводнике и размаке око ње). Ево примера:
СЕЦРЕТ_КЕИ=к#)_в1дтрлквц61*025т^у4*-2х^кк&фмав-ифгкппјкпихх1%
Отвори .гитигноре датотеку и потврдите да је .енв име датотеке је у њему. Ако није, можете га додати тако што ћете написати име датотеке самостално на линији:
.енв
3. Инсталирајте пакет питхон-дотенв
Отворите свој ЦЛИ и инсталирајте питхон-дотенв пакет као зависност.
пип инсталл питхон-дотенв
4. Измените датотеку сеттингс.пи
У вашем сеттингс.пи датотеку, увезите следеће пакете:
увоз ос
из дотенв увоз лоад_дотенв
Затим учитајте променљиве окружења из вашег .енв датотеку у свој сеттингс.пи датотеку позивањем лоад_дотенв() функција:
лоад_дотенв()
Коначно, замените своје ТАЈНИ КЉУЧ променљива са овом линијом кода:
СЕЦРЕТ_КЕИ = ос.енвирон.гет('ТАЈНИ КЉУЧ')
Можете покренути свој развојни сервер да бисте потврдили да горња конфигурација функционише. Ако је тако, ваш пројекат би требало да ради како бисте очекивали. Наредба у наставку ће покренути ваш развојни сервер.
питхон манаге.пи рунсервер
Чувајте свој тајни кључ са варијаблама окружења
Откривање вашег тајног кључа може изазвати многе проблеме за вас као програмера. Можда нећете увек моћи да опоравите свој пројекат од напада, посебно у производном окружењу.
Да бисте спречили ове негативне споредне ефекте, увек чувајте свој тајни кључ у променљивој окружења и користите а .гитигноре датотеку да бисте је држали ван свог гит спремишта.