/ / Dlaczego nie wygenerować tajnego klucza za każdym razem, gdy zaczyna się Flask? - python, sesja, kolba, pliki cookie sesji

Dlaczego nie wygenerować tajnego klucza za każdym razem, gdy zaczyna się Flask? - python, sesja, kolba, pliki cookie sesji

Podczas korzystania z sesji, Flask wymaga tajnego klucza. W każdym przykładzie "tajny klucz" jest generowany, a następnie przechowywany w kodzie źródłowym lub w pliku konfiguracyjnym.

Jaki jest powód przechowywania go na stałe? Dlaczego nie po prostu wygenerować go po uruchomieniu aplikacji?

app.secret_key = os.urandom(50)

Odpowiedzi:

26 dla odpowiedzi nr 1

Tajny klucz służy do podpisania pliku cookie sesji. Jeśli trzeba ponownie uruchomić aplikację i zregenerować klucz, wszystkie istniejące sesje zostaną unieważnione. To prawdopodobnie nie jest to, czego potrzebujesz (a przynajmniej nie jest to właściwa metoda unieważniania sesji). Podobny przypadek można by zastosować do wszystkiego, co zależy od tajnego klucza, takiego jak tokeny generowane przez itsdangerous, aby zapewnić resetowanie hasła adresy URL (na przykład).

Aplikacja może wymagać ponownego uruchomieniaz powodu awarii, lub z powodu ponownego uruchomienia serwera, lub z powodu wprowadzenia poprawki lub nowej funkcji, lub z powodu tego, że serwer, z którego korzystasz, uruchamia nowe procesy itp., więc nie można polegać na tym, że serwer jest na zawsze.

Standardowa praktyka polega na tym, że jakiś klucz do wyrzucenia jest przypisany do repozytorium (tak, że jest tam coś tam dla maszyn dev), a następnie ustawić klucz w lokalnej konfiguracji podczas wdrażania. W ten sposób klucz nie wycieknie i nie musi być regenerowany.

Jest też przypadek biegania wtórnegosystemy zależne od kontekstu aplikacji, takie jak Seler do uruchamiania zadań w tle lub wiele równoważonych obciążeniem instancji aplikacji. Jeśli każda uruchomiona instancja aplikacji ma inne ustawienia, może nie działać poprawnie w niektórych przypadkach.