2013-07-04 8 views
6

Dokumenty mówią, że powinny być tajne, ale mój kod został opublikowany na github.Do czego należy używać secret.cookieParser()?

Czy app.use(express.cookieParser(crypto.randomBytes(64).toString())) działa, czy sekret powinien być taki sam po ponownym uruchomieniu serwera? Czy powinienem przechowywać sekret na dysku? Jak sekret musi być?

Odpowiedz

4

Aby utrzymać tajny sekret, można ustawić go w zmiennej środowiskowej (zwanej „COOKIE_SECRET” na przykład), a następnie można zrobić:

var cookieSecret = process.env.COOKIE_SECRET; 

app.use(express.cookieParser(cookieSecret)); 

(lub jeśli chcesz bardziej wyrafinowane konfiguracji config , możesz spojrzeć na nconf. Ujednolica on konfigurację między zmiennymi środowiskowymi, argumentami wiersza poleceń i plikami płaskimi).

3

Powinny być takie same, jeśli chcesz zachować sesje po ponownym uruchomieniu. Tajemnica służy do sprawdzania danych sesji na serwerze, aby zapobiec zniekształceniu danych cookie. Być może możesz zapisać swoje losowe dane do pliku i odczytać tajny plik z pliku na początku aplikacji, a jeśli plik istnieje, nie twórz nowego losowego klucza.

3

Sekret służy do analizowania i dopasowywania pliku cookie sesji. Jeśli zmienisz go po restarcie, spowoduje to unieważnienie poprzednich sesji, ponieważ ciasteczko nie będzie ważne z nowym sekretem.

Jednak w przypadku kradzieży plików cookie, możesz rozważyć zmianę tajemnicy, która cię chroni. Nie jest dobrą praktyką przechowywanie sekretów w dowolnym miejscu poza miejscem, w którym jest to potrzebne. To samo dotyczy wszelkich sekretów i soli, ponieważ dostęp do nich nie jest dobry dla twojego bezpieczeństwa.

Powiązane problemy