Wpis z mikrobloga

Z perspektywy bezpieczeństwa, czym jest App Secret (clientsecret) w Facebookowym API?

Chodzi o to, że piszę aplikację webową w Javie/Spring, która korzysta z OAuth 2 i po zarejestrowaniu jej w na Facebooku otrzymuję:
- App ID (client
id),
- App Secret (client_secret).

App ID wiem, że to jest po prostu ID, żeby Facebook mógł odróżnić, która aplikacja się łączy. Wstawiłem to na sztywno do kodu.
Po co więc App Secret? Nie powinienem wstawiać tego na sztywno do kodu? Rozumiem, że tym bardziej na repozytorium nie powinien tego wrzucać. Jak to powinienem rozwiązać? Mogę wydzielić to do innego pliku, z którego będę potem pobierał i tego pliku po prostu nie wrzucać na repozytorium. Ewentualnie z bazy danych pobierać.

A co by się stało jakby ktoś wykradł App Secret? Co mógłby wtedy złego zrobić? Bo chyba nie rozumiem czemu mam to chronić.

#facebook #webdev #java #programowanie
  • 3
@mk321: Secret pozwala Ci wygenerować application token. Bez jego znajomości, jeżeli ktoś Ci zakosi token - możesz go unieważnić i się nie bać o nic. Jeżeli secret zostanie Ci zakoszony - zły człowiek może sobie nagenerować tokenów i podszywać się pod Twoją aplikację.

Ja rzeczy tego typu ładuję sobie ze zmiennych środowiskowych. Springowe aplikacje puszczam dockerem, więc to nie jest problem.

Ale fakt faktem - tokenów i innych wrażliwych rzeczy w
Deployment aplikacji składa się zazwyczaj z dwóch głównych grup komponentów. Pierwsza to paczki z kodem, binarki, biblioteki, skrypty i tak dalej, wszystko co wszędzie jest takie samo i nie zawiera wrażliwych danych. Druga grupa to pliki konfiguracyjne i wszelkiego rodzaju credentiale - do bazy danych, do zewnętrznych API, to innych systemów, z którymi aplikacja się integruje. Druga grupa zazwyczaj jest inna dla każdego środowiska (testowe, produkcyjne, etc), dlatego jest deployowana osobno. Można