복붙노트

[PYTHON] 플라스크가 시작될 때마다 비밀 키를 생성하지 않으시겠습니까?

PYTHON

플라스크가 시작될 때마다 비밀 키를 생성하지 않으시겠습니까?

세션을 사용할 때 Flask에는 비밀 키가 필요합니다. 필자가 보았던 모든 예에서 비밀 키는 어떻게 든 생성 된 다음 소스 코드 또는 구성 파일에 저장됩니다.

영구 보관하는 이유는 무엇입니까? 왜 응용 프로그램이 시작될 때 단순히 생성하지 않습니까?

app.secret_key = os.urandom(50)

해결법

  1. ==============================

    1.비밀 키는 세션 쿠키에 서명하는 데 사용됩니다. 응용 프로그램을 다시 시작하고 키를 재생성해야하는 경우 모든 기존 세션이 무효화됩니다. 그것은 아마도 당신이 원하는 것이 아닐 것입니다. (적어도 무효화 세션에 대한 올바른 방법은 아닙니다.) 유사한 경우가 비밀 키에 의존하는 다른 것, 예를 들어 비밀번호 재설정 URL을 제공하기 위해 생성 된 토큰과 같은 경우도있을 수 있습니다.

    비밀 키는 세션 쿠키에 서명하는 데 사용됩니다. 응용 프로그램을 다시 시작하고 키를 재생성해야하는 경우 모든 기존 세션이 무효화됩니다. 그것은 아마도 당신이 원하는 것이 아닐 것입니다. (적어도 무효화 세션에 대한 올바른 방법은 아닙니다.) 유사한 경우가 비밀 키에 의존하는 다른 것, 예를 들어 비밀번호 재설정 URL을 제공하기 위해 생성 된 토큰과 같은 경우도있을 수 있습니다.

    응용 프로그램은 충돌로 인해 다시 시작해야 할 수도 있고 서버가 재부팅되거나 버그 수정이나 새로운 기능을 사용 중이거나 사용중인 서버가 새 프로세스를 생성하기 때문에 재시작해야 할 수도 있습니다. 서버가 영원히 올라간다.

    표준 실습은 repo에 커밋 된 약간의 폐기 키를 가지고 (그래서 dev 머신을 위해 거기에 뭔가가 있음) 배포 할 때 로컬 설정에서 키를 설정하는 것입니다. 이 방법은 키가 유출되지 않으며 다시 생성 할 필요가 없습니다.

    백그라운드 작업을 실행하기위한 Celery 나 애플리케이션의 여러로드 균형 조정 인스턴스와 같이 앱 컨텍스트에 의존하는 보조 시스템을 실행하는 경우도 있습니다. 실행중인 각 응용 프로그램 인스턴스마다 설정이 다르면 일부 경우 제대로 작동하지 않을 수 있습니다.

  2. from https://stackoverflow.com/questions/27287391/why-not-generate-the-secret-key-every-time-flask-starts by cc-by-sa and MIT license