-Gastbeitrag von Johannes Nagl, Die Socialisten –
Neben der Tatsache, dass ernsthafte EntwicklerInnen einige Entwicklungszeit für die Absicherung einer App gegen Angriffsmöglichkeiten wie XSS oder SQL Injection aufwenden, vergessen viele EntwicklerInnen darauf, dass auch die App auf Facebook bzw. die eigenen Facebook-Accounts geschützt werden sollten. In diesem Tutorial möchte ich auf fünf sehr einfache Schritte hinweisen, die die Sicherheit rund um die Facebook App Entwicklung enorm steigern können.
Eine der größten Vorteile der Facebook-Plattform ist die einfache Verwendung. Die meisten EntwicklerInnen haben bereits einen privaten Facebook Account und können somit in wenigen Sekunden/Clicks neue Facebook Apps im Developer Dashboard anlegen. EntwicklerInnen tendieren erfahrungsgemäß zum Überfliegen: Sie füllen die „Basic“ Einstellungen mit den notwendigen URL-Angaben aus und werfen nach dem Speichern keinen Blick mehr in die (weiteren) Einstellungen. Entwickelt man eine Marketing App, wird es oftmals noch schlimmer: Kurz vor dem Launch erhält der/die EntwicklerIn Administratoren-Rechte zur Page um den neu erstellten Tab auf der Seite zu installieren. Die Kampagne startet und plötzlich vergessen alle Beteiligten auf die nur schlecht konfigurierte Facebook App und die Administratoren-Rechte, die der/die EntwicklerIn erhalten hat, denn schließlich ruft das nächste Projekt bereits und alles scheint gut zu funktionieren – der Buzz verbreitet sich!
Die erweiterten Einstellungen der Facebook App, bzw. das Profil des/der EntwicklerIn bleiben zumeist unangetastet. Diese Aspekte sollten allerdings nicht vergessen werden. Werden diese Punkte übersehen, kann es rasch zu folgenden Problemen kommen:
- Erlangt jemand Zugriff zu einem Developer Account, können App-Details ausspioniert werden (zB das App-Secret, mit dessen Hilfe es dann möglich wäre Facebook-Notifications an App-User zu schicken)
- Änderungen an den App-URLs können vorgenommen werden, um User unbemerkt auf einen fremden Server zu leiten
- Neue Administratoren können zu einer App hinzugefügt, oder bestehende entfernt werden. Dies kann zum kompletten Verlust der App führen.
- Löschung der Facebook-App (betrifft natürlich nur die Facebook App, nicht die Daten, die am eigenen Server gespeichert werden)
Wurde ein EntwicklerInnen-Account auch als Page-Admin hinzugefügt, können noch größere Probleme entstehen, sollte der Account kompromittiert werden:
- Erstellung von unautorisierten/unseriösen Postings
- Löschen von bestehenden Postings/Kommentare
- Entfernung der bisherigen, legitimen AdministatorInnen = kompletter Verlust der Seite
- Schlimmster Fall: Beantragung einer Löschung der kompletten Page
Nun, da eine Vielzahl an Problemen aufgezeigt wurde, wenden wir uns fünf einfachen Schritten zu, die die Sicherheit des eigenen Profils oder der Facebook App erhöhen können.
2 Factor Auth / Login Approvals
Als EntwicklerIn/Community ManagerIn sollte man sich nie ausschließlich allein auf ein Passwort verlassen, das eventuell zusätzlich auf anderen Plattformen ebenfalls verwendet wird. Deswegen sollte man unbedingt Facebooks 2 Factor Auth (aka Login Approvals) aktivieren. Zwei Faktoren bedeutet in diesem Fall, dass man zusätzlich zu seinem Passwort einen Bestätigungscode eingeben muss, wenn man sich bei unbekannten Browsern auf facebook.com anmeldet. Dieser Code kann entweder automatisch per SMS zugesandt werden, oder in der nativen mobilen Facebook-App auf Android/iOS abgerufen werden. Login-Approvals ist eine der effektivsten Möglichkeiten, um unautorisierte Zugriffe auf das eigene Profil zu verhindern. Natürlich ist sie aber auch mit einem gewissen Zeitaufwand verbunden. Aktiviert werden können Login-Approvals direkt in den Sicherheitseinstellungen des eigenen Profils.
Die beschriebene Methode betrifft nur unbekannte Browser. Meldet man sich auf seinem eigenen Rechner an, ist keine zusätzliche Abfrage notwendig. Übrigens – wenn wir schon vom eigenen Computer sprechen: warum nicht am Ende des Tages am Firmencomputer von Facebook abmelden? Das Beste daran: Facebook selbst bietet hier ein optisches Zuckerl in Form der sogenannten „Logout Experience„. Hand aufs Herz: Wann war das letzte Mal, dass dieses Ad-Format am eigenen Computer erschienen ist?
Entwicklergruppen
Es ist ein sehr weit verbreitetes Szenario in vielen Firmendomänen oder Server-Konfigurationen. Im Facebook-Umfeld hat sich diese Methode erfahrungsgemäß jedoch noch nicht durchgesetzt: Die Verwendung von Gruppen für die Definition von EntwicklerInnen-Rollen. Die meisten EntwicklerInnen tendieren dazu, einen spezifischen Account zu den eingebauten App-Rollen (AdministratorInnen, EntwicklerInnen, TesterInnen, Insights Users) direkt hinzuzufügen. Doch es gibt eine elegantere Möglichkeit dafür: Die Verwendung von klassischen Facebook-Gruppen, um spezifische Rollenmitgliedschaften abzubilden. Das nachträgliche Hinzufügen/Entfernen von Accounts ist kinderleicht und spart viel Zeit (vgl. notwendiger Aufwand, um einen Account von einer Gruppe zu löschen im Gegensatz zum Entfernen von 200 Apps). Pro-Tipp: Vor allem das Verwalten der Insights Users, die meistens zu großen Teilen aus unterschiedlichen Kundenprofilen bestehen, ist somit deutlich einfacher.
Zugriff auf die Development Settings auf IP-Ebene restringieren
Facebook selbst bietet sehr nützliche Funktionen, um den Zugriff auf die Developer Settings einer App zu beschränken. Vor allem die folgenden zwei Funktionen sollten in jeder App ausgefüllt werden:
- Update Settings IP Whitelist: Falls angegeben, dürfen nur Personen mit den angegebenen IP-Adressen Einstellungen ändern (vgl. Büro-IP-Adresse)
- Update Notification Email: Falls angegeben, werden alle Änderungen protokolliert und automatisch per E-Mail verschickt. Die so generierte E-Mail enthält IP-Adresse und Facebook-Profil, von dem die Werte geändert wurden.
Diese Einstellungen können im Abschnitt „Security“ im „Advanced“-Bereich des Developer-Dashboards ausgefüllt werden.
Keine Page-Admin Rechte für EntwicklerInnen
Das Sprichwort „zu viele Köche verderben den Brei“ trifft denke ich ebenfalls auf das Community-Management zu. Je mehr AdministatorInnen zu einer Seite hinzugefügt wurden, desto größer ist die Möglichkeit einer auftretenden Gefahr. Ist ein Account eines Entwicklers/einer Entwicklerin gehackt, dauert es nicht lange, bis ein/e AngreiferIn die Liste an verwalteten Seiten findet. Wie bereits erwähnt, kann dies zu wirklich großem Schaden auf den einzelnen Seiten führen.
Zum Glück gibt es keinen einzigen Grund, warum man einen EntwicklerInnen-Account Zugriff auf die Kundenseite geben müsste. Im Gegenteil: Es gibt eine Reihe an Möglichkeiten, wie ein Kunde/eine Kundin selbst die neu erstellte Tab-App auf der eigenen Seite hinzufügen kann:
- Die Allereinfachste: Folgenden Link im Browser aufrufen und YOUR_APP_ID durch die eigene App-ID ersetzen:
https://www.facebook.com/add.php?api_key=YOUR_APP_ID&pages=1 - Falls ein hübsches Backend für die App besteht, kann über den Einsatz eines Facebook-eigenen Dialogs nachgedacht werden. Mit Hilfe von Facebook’s JS SDK Add Page Tab Dialog ist das Installieren eines Page-Tabs dann ein nahtloser Aufwand innerhalb der eigenen App.
Ein separater “Fake”-Account für die Entwicklung
Zu guter Letzt – bitte nicht falsch verstehen: In Übereinstimmung mit den Facebook Community Standards ist die Verwendung von einer falschen Identität nicht erlaubt:
Claiming to be another person, creating a false presence for an organization, or creating multiple accounts undermines community and violates Facebook’s terms.
Da ich immer versuche, den Facebook-Richtlinien so weit wie möglich zu folgen, verwende ich persönlich keinen Zweitaccount. In einer Liste an einfachen Schritten, um die Sicherheit der Facebook-Entwicklung zu erhöhen, sollte dieser Punkt dennoch nicht fehlen. Die Verwendung von isolierten Accounts für berufliche Agenden und privatem Vergnügen stellt einen großen Sicherheitsgewinn dar. Das Verwenden von Drittanbieter-Apps mit Facebook-Login oder das Einloggen mit den privaten Zugangsdaten auf fremden Computern ist somit (aus EntwicklerInnen-Sicht) gefahrlos möglich.
Fazit
Auf den ersten Blick ist erhöhte Sicherheit oftmals ein unliebsamer Klotz am Bein. Natürlich bedeutet erhöhte Sicherheit auch einen erhöhten Zeitaufwand. Am Ende des Tages ist jedoch jede einzelne Sekunde den Aufwand wert! Die genannten Schritte kosten pro Projekt maximal 10-15 Minuten, können jedoch ein Vielfaches an Zeit und Kopfschmerzen sparen. Die Rechnung ist einfach: Je mehr Zeit man in sicherheitsrelevante Dinge investiert, umso länger benötigt ein/e potentielle/e AngreiferIn, um einen Account oder eine App zu kompromittieren.
EntwicklerInnen: Alle Alarmleuchten sollten leuchten, wenn bisher keine der genannten Techniken verwendet wurden. Lasst die schnelle und unüberlegte Arbeit hinter euch. Startet jetzt eine vernünftigere und vor allem sichere Facebook-App Developer Zukunft! Eure Kunden und vor allem eure User werden es euch danken!
Dieser Beitrag wurde im Original auf garage.socialisten.at veröffentlicht.
Bildquelle: Security concept: Lock on digital screen, contrast, 3d render on shutterstock.com
Über den Autor:
Johannes Nagl ist technischer Leiter von „Die Socialisten„. Die Wiener Social-Software-Agentur ist im Facebook Preferred Marketing Developer-Programm in den Kategorien Apps & Pages gelistet. Johannes ist immer auf der Suche nach Wegen, um seine Apps zu optimieren.