Wie sicher ist es, R-Pakete für die Arbeit mit der API für Werbesysteme zu verwenden?

In letzter Zeit stellten sie mir ziemlich oft die Frage, wie sicher es ist, verschiedene vorgefertigte Erweiterungen zu verwenden, d. H. Pakete für die R-Sprache geschrieben, besteht die Möglichkeit, dass das Werbekonto in die falschen Hände gerät


In diesem Artikel werde ich ausführlich darauf eingehen, wie der Autorisierungsmechanismus in den meisten Paketen und APIs von Werbediensten funktioniert und wie die im Artikel beschriebenen Pakete so sicher wie möglich verwendet werden.


Bild

Die Informationen in diesem Artikel sind technisch gesehen nicht die einfachsten. Da der Text nicht so trocken und technisch ist wie die übliche Hilfe, wage ich es, die Rolle eines Leitfadens auszuprobieren, und werde Sie zur einfachsten Wahrnehmung durch die Materialien dieses Artikels führen.

Unser Sightseeing-Bus ist bereits angekommen. Nehmen Sie Platz und sehen Sie sich unsere aktuelle Reiseroute an.


Inhalt


  1. Wie der Autorisierungsprozess in den meisten modernen Werbediensten funktioniert
  2. Woher kam die Sicherheitsfrage?
  3. Was bedroht Sie mit einem Token-Abfangen?
  4. Was tun, wenn jemand Ihren Token in Besitz genommen hat?
  5. So verwenden Sie R-Pakete am sichersten, um mit den API-Werbesystemen zu arbeiten


    5.1. ryandexdirect und rym - Pakete für die Arbeit mit den APIs Yandex.Direct und Yandex.Metrica
    5.2. rfacebookstat- Pakete für die Arbeit mit dem Facebook-Werbekonto
    5.3. rvkstat - Pakete für die Arbeit mit dem VK-Konto
    5.4. rmytarget - MyTarget Dashboard-Pakete


  6. Fazit

Wie der Autorisierungsprozess in den meisten modernen Werbediensten funktioniert


Der Treffpunkt unserer Exkursionsgruppe ist das OAuth-Protokoll.



Fast alle Dienste, mit denen API arbeiten musste, führen eine Autorisierung mit dem OAuth 2.0-Protokoll durch. Sie haben bereits ausführlicher darüber auf dem Hub geschrieben, die daran interessiert sind, einen Spaziergang in der Wildnis zu machen. Bitte, Sie haben eine solche Gelegenheit, Sie können dies hier und hier tun.


Wenn Sie die Bedeutung auf den Punkt bringen, erlaubt OAuth der Anwendung (in unserem Fall ist das R-Paket eine solche Anwendung), für die Sie die Erlaubnis erteilt haben, einige Aktionen in Ihrem Namen auszuführen, ohne dass Sie Ihren Benutzernamen und Ihr Passwort vom Werbekonto auf diese Anwendung übertragen müssen. wieder aus Sicherheitsgründen.


Anstelle eines Benutzernamens und eines Kennworts verwendet das OAuth-Protokoll ein Token. Hierbei handelt es sich um eine generierte Zeichenfolge, die aus einer Reihe von Buchstaben und Zahlen besteht und Informationen in verschlüsselter Form speichert:



  • Für welchen Benutzer die Anwendung die Anforderung ausführt
  • Hat der Benutzer dieser Anwendung wirklich Zugriff auf ihre Daten gewährt?
  • Verfügt der Benutzer selbst über die erforderlichen Berechtigungen, um mit den Werbematerialien zu arbeiten, auf die er sich bezieht?

Für den Autorisierungsprozess und die Arbeit mit der API müssen Sie die Anwendung normalerweise in der API registrieren. Ferner sollte diese Anwendung eine Bestätigung vom API-Supportteam eines bestimmten Werbesystems erhalten, d. H. Der Autor beschreibt zunächst ausführlich, wie und warum er die API verwenden wird. All dies wird überprüft, moderiert. Nur wenn der Support auf der Seite der Werbeplattform keine Sicherheitsfragen enthält, erhält der Autor des Pakets Zugriff auf die API und mit Hilfe seiner registrierten Anwendung Sie Paket können Sie sich mit der ID und dem Geheimnis authentifizieren, die für diese Anwendung ausgestellt wurden.


Woher kam die Sicherheitsfrage?


Wir machen weiter. Versuchen wir herauszufinden, wo die Sicherheitsfrage bei der Verwendung von Paketen aufgetreten ist.



Im Allgemeinen ist das Problem der Sicherheit des Zugriffs auf Werbetafeln mehr als gerechtfertigt, da Werbebüros über Geld verfügen und häufig nicht klein genug sind. Daher ist die Sicherheit von Werbekonten ein viel ernsteres Problem als die Sicherheit des Zugriffs beispielsweise auf ein reguläres Benutzerprofil in sozialen Netzwerken.


Tatsache ist, dass R in den meisten Fällen bei der Autorisierung Benutzer der Pakete zum Browser umleitet, um zunächst den Zugriff auf das Konto zu bestätigen. Zu diesem Zeitpunkt befinden Sie sich auf der Serviceseite mit der API, mit der Sie arbeiten werden. Nach der Bestätigung wird der Benutzer auf die Seite umgeleitet, auf der das Token generiert wird, oder auf den Autorisierungsbestätigungscode, der anschließend in die R-Konsole eingegeben werden muss.


Die meisten Benutzer sind daher besorgt, da die Websites, auf denen das Token selbst oder der Autorisierungsbestätigungscode generiert wird, von Drittanbietern stammen und nichts mit dem Werbedienst selbst zu tun haben. Natürlich haben sie entweder einen Google Analytics-Zähler oder einen Yandex.Metrica-Zähler und den Websitebesitzer. In den meisten Fällen ist dies nach Ansicht vieler auch der Autor des Pakets. Über diese Website kann sie ihre Token in Besitz nehmen und über sie Zugriff auf die Verwaltung ihrer Werbematerialien erhalten.


Was bedroht Sie mit einem Token-Abfangen?


Lassen Sie uns darüber sprechen, was es Ihnen im Allgemeinen ermöglicht, ein Token zu erstellen, wenn es in die Hände eines Angreifers fällt.


Das Token muss auf die gleiche Weise gespeichert werden wie alle anderen Daten, die für den Zugriff auf das Konto erforderlich sind, d. H. Wenn der Token in eine der beiden Hände fällt, kann derjenige, der ihn in Besitz genommen hat, Ihre Werbematerialien verwalten: Löschen Sie sie, ändern Sie beispielsweise, es ist möglich, den Text der Anzeige und den Link, zu dem sie führt, zu ändern.


Die gute Nachricht ist, dass Sie, wie oben geschrieben, mit dem OAuth-Protokoll die Möglichkeit erhalten, Ihre Werbematerialien zu verwalten, ohne einen Benutzernamen und ein Passwort von Ihrem Konto anzugeben, d. H. Selbst wenn jemand Ihren Token in Besitz genommen hat, kann er Ihr Konto mit seiner Hilfe nicht stehlen. Mit keiner einzigen API können Sie Ihr Passwort anfordern und vor allem ändern, damit Ihr Konto nicht entfernt wird. Die Werbung für Ihre Website über Ihr Konto ist jedoch einfach.


Was tun, wenn jemand Ihren Token in Besitz genommen hat?


Wenn Sie Ihren Token versehentlich übertragen haben, geraten Sie nicht in Panik. Tatsächlich ist dies nicht das Ende der Welt. In den meisten Fällen gibt es eine Reihe von Aktionen, mit denen zuvor ausgegebene Token zurückgesetzt werden. In diesem Abschnitt der Yandex.Direct-API-Referenz wird beispielsweise der Vorgang des Abrufs zuvor ausgegebener Token ausführlich beschrieben.


In den meisten Fällen reicht es aus, unabhängig davon, mit welcher Werbesystem-API Sie arbeiten, nur das Kennwort für Ihr Konto zu ändern.


So verwenden Sie R-Pakete am sichersten, um mit den API-Werbesystemen zu arbeiten


Und jetzt haben wir den interessantesten Teil unserer Tour erreicht. Dann werde ich darüber sprechen, wie es am sichersten ist, die von mir entwickelten Pakete zu verwenden, da ich mit den APIs der Systeme, mit denen sie arbeiten, gut vertraut bin.


Ich möchte darauf hinweisen, dass alle ausgegebenen Token auf der Seite der Werbeplattform gespeichert sind, nicht auf der Anwendung, über die das R-Paket funktioniert, sodass selbst der Benutzer der registrierten Anwendung für die Arbeit mit der Werbeplattform-API keinen Zugriff auf das Token selbst hat.


ryandexdirect und rym - Pakete für die Arbeit mit den APIs Yandex.Direct und Yandex.Metrica


Beide Pakete verwenden den Yandex OAuth-Dienst. Weitere Informationen finden Sie unter diesem Link .


Das ryandexdirect-Paket enthält zwei Funktionen zur Autorisierung:


  • yadirAuth - zweistufige Autorisierung
  • yadirGetToken - Anforderung eines Autorisierungstokens

Wenn Sie die yadirAuth-Funktion verwenden, dh ich empfehle, sie bei der Arbeit mit ryandexdirect zu verwenden, läuft der Autorisierungsprozess gemäß dem hier beschriebenen Schema ab . Die einzige Sicherheitsanfälligkeit ist in diesem Fall der Zeitraum vom Generieren des Bestätigungscodes bis zur Eingabe in die R-Konsole.


Im Folgenden wird erläutert, wie Google Analytics Daten zu Besuchen der Seite zur Generierung von Bestätigungscodes anzeigt.



Das heißt, Der Code steht nach dem '?' - Zeichen und wird als GET-Parameter betrachtet, der den Google Analytics-Zähler erfasst. Die Lebensdauer eines solchen Bestätigungscodes endet jedoch unmittelbar nach seiner Verwendung, d. h. direkt nachdem Sie es in die Konsole R eingegeben haben. Die maximale Lebensdauer eines solchen Codes beträgt 10 Minuten.


Die zweite Funktion, yadirGetToken , führt die Autorisierung gemäß dem anderen hier beschriebenen Schema durch. Und wenn es verwendet wird, wird kein Bestätigungscode erzeugt, d.h. Nachdem Sie dem Paket die Berechtigung zum Zugriff auf die Daten erteilt haben, gelangen Sie zur Seite zur Token-Generierung. Das Token in der URL selbst wird nach dem Zeichen '#' zurückgegeben. Dies ist kein get-Parameter, sondern ein Anker, oder da dieser Teil der URL auch als Hash bezeichnet wird. Der Browser überträgt diese Daten nicht und wird dementsprechend nicht weiter an Google Analytics-Berichte übertragen, d. H. Besuche dieser Seite in Berichten werden wie folgt angezeigt:



In diesem zweiten Fall gibt es keine Risiken, aber das Minus der Verwendung der Funktion yadirGetToken besteht darin, dass die Anmeldeinformationen nicht in einer Datei auf Ihrem PC gespeichert werden und diese Daten dementsprechend nicht zwischen verschiedenen R-Sitzungen verwendet werden können, was nicht sehr praktisch ist. Sie speichern das mit seiner Hilfe erhaltene Token und verwenden es in den Skripten als Textzeichenfolge. Die Lebensdauer eines solchen Tokens beträgt 1 Jahr. Danach kann das Paket es nicht mehr automatisch ersetzen, wie dies bei Verwendung der Funktion yadirGetAuth der Fall ist.


Es gibt eine Funktion rym_auth im rym-Paket zur Autorisierung, die ein vollständiges Analogon der yadirAuth-Funktion ist, deren Operationsschema ich bereits ausführlich beschrieben habe.


rfacebookstat - Pakete für die Arbeit mit dem Facebook-Werbekonto


Der Authentifizierungsprozess in der Facebook Marketing API wird hier ausführlich beschrieben.


Um die Autorisierung zu übergeben, verfügt das Paket rfacebookstat über die Funktion fbGetToken . Es funktioniert genauso wie die zuvor beschriebene Funktion yadirGetToken aus dem Paket ryandexdirect, d. H. Alles wird durch einstufige Authentifizierung implementiert. Es besteht keine Gefahr, dass Ihr Token über Google Analytics-Berichte abgefangen wird. Es wird angezeigt, wie ein Besuch der Token-Generierungsseite in Google Analytics aussieht.



rvkstat - Pakete für die Arbeit mit dem VK-Konto


Der Vkontakte-Authentifizierungsprozess wird in der API-Hilfe beschrieben .
In rvkstat können Sie eine von zwei Funktionen zur Autorisierung verwenden:


  • vkAuth - Autorisierungsschema Fluss des Autorisierungscodes , d.h. zweistufige Autorisierung.
  • vkGetToken - Autorisierung gemäß dem impliziten Ablaufschema, einstufige Autorisierung, wobei das Token an das Gerät gebunden ist.

vkAuth bietet eine zweistufige Authentifizierung, im Wesentlichen ein Analogon der am Anfang dieses Blocks beschriebenen yadirAuth Funktion, jedoch nur zur Autorisierung in der Vkontakte-API und nicht in Yandex.


Die Besonderheit bei der Arbeit mit der Vkontakte-API besteht in diesem Fall darin, dass die Registrierung Ihrer Anwendung und der Zugriff auf die API dort recht einfach ist. Sie müssen keine Formulare ausfüllen, in denen Sie detailliert beschreiben müssen, wie und warum Sie die API verwenden. Da Sie Ihre Anwendung bei der Arbeit mit rvkstat verwenden, funktioniert das Abfangen des Bestätigungscodes nicht, da Es ist an Ihre Anwendung gebunden. Um ein Token damit abzufangen, müssen Sie die ID und das Geheimnis Ihrer Anwendung kennen. Der Code selbst ermöglicht es Ihnen nicht, ein Token für Sie zu erhalten.


Mit der vkGetToken Funktion können Sie das Token auf schnellste Weise vkGetToken Außerdem ist das empfangene Token an das Gerät gebunden, von dem es angefordert wurde, d. H. Selbst wenn jemand es bekommt, kann er es nur von demselben PC aus verwenden, von dem er angefordert wurde. Gleichzeitig befindet sich das Token in der URL beim Generieren nach dem Zeichen "#" und wird, wie bereits erwähnt, nicht in Google Analytics-Berichte aufgenommen.



rmytarget - MyTarget Dashboard- Pakete


Derzeit gibt es in der MyTarget-API drei Autorisierungsschemata. Einzelheiten dazu finden Sie in der Dokumentation .


Die Funktion myTarAuth ist für die Autorisierung in der MyTarget-API in rmytarget vorgesehen. Standardmäßig wird das Autorisierungsschema Authorization Code Grant verwendet, mit dem Sie mit der MyTarget-API arbeiten können, ohne persönlich darauf zugreifen zu müssen. Das heißt, Ich habe die Anwendung bereits registriert, sie wurde vom MyTarget-API-Support genehmigt, und Sie gewähren ihr Zugriff, um in Ihrem Namen mit dem Konto zu arbeiten.


Authorization Code Grant ist ein zweistufiges Autorisierungsschema, das dem von der yadirAuth Funktion im ryandexdirect-Paket implementierten ähnlich ist.


Es funktioniert wie folgt:


  • Sie starten die Funktion, woraufhin der Browser geöffnet wird.
  • Auf der MyTarget-Dienstseite erteilen Sie die Berechtigung zum Zugriff auf Ihr Konto.
  • Sie werden zur Paketseite weitergeleitet, auf der der Bestätigungscode generiert wird. Die maximale Lebensdauer dieses Codes beträgt 1 Stunde, endet jedoch sofort, nachdem Sie ein Token damit erhalten haben.
  • Sie geben den kopierten Bestätigungscode in die R-Konsole ein und erhalten ein Token für die Arbeit mit der API.

In diesem Fall ist der Bestätigungscode ein get-Parameter und wird in Google Analytics-Berichten aufgezeichnet.



Wenn Sie jedoch genau hinschauen, enthält die URL zusätzlich zum Code (Parametercode abrufen) einen weiteren Parameterstatus. Dies ist eine Zeichenfolge, auch ein Token, das vom rmytarget-Paket selbst generiert und unmittelbar nach dem Start der Funktion an den Browser gesendet wird. Dieser Parameter ist eindeutig und der Autorisierungsbestätigungscode ist daran angehängt. Selbst wenn Sie sowohl den Bestätigungscode als auch das Status-Token abfangen, können Sie diese Kombination nicht verwenden, da Erstens gibt es keinen Ort, an dem das Status-Token eingegeben werden kann, und wie ich bereits geschrieben habe, ist es einzigartig, und selbst wenn es einen Ort gab, an dem es eingegeben werden kann, kann es nicht erneut gesendet werden. Daher ist dieses Autorisierungsschema völlig sicher.


Wenn Ihnen diese Option dennoch verdächtig erscheint, können Sie mit rmytarget und der Funktion myTarAuth die verbleibenden zwei Autorisierungsschemata verwenden:


  • Client Credentials Grant , wird verwendet, um mit persönlichen Kontodaten über die API zu arbeiten
  • Agency Client Credentials Grant , der verwendet wird, um mit den Daten ihrer eigenen Kunden von Agenturen / Managern zu arbeiten.

In diesem Fall müssen Sie unabhängig auf die MyTarget-API zugreifen. Derzeit können nur juristische Personen darauf zugreifen. Sie wird manuell ausgestellt. Um den Zugriff anzufordern, müssen Sie das Feedback-Formular verwenden. Alle Details finden Sie hier .


Wenn Sie es dennoch geschafft haben, Ihre Anwendung für die Arbeit mit der MyTarget-API zu registrieren, können Sie sich mit der Funktion myTarAuth ganz einfach mit einem der beiden oben aufgeführten Schemata authentifizieren. Übergeben Sie dazu den Wert FALSE an das Argument code_grant und verwenden Sie die folgenden Argumente:


  • grant_type - Der Typ Ihres Kontos, in diesem Fall ein reguläres Kundenkonto, nimmt die Werte "client_credentials" oder "agentur_client_credentials" an.
  • agentur_client_name - Client-Anmeldung vom Agentenkonto, die nur verwendet wird, wenn grant_type = "agentur_client_credentials".
  • client_id - ID wird Ihnen ausgestellt, wenn Sie den Zugriff auf die MyTarget-API bestätigen.
  • client_secret - Wird Ihnen ausgestellt, wenn Sie den Zugriff auf die MyTarget-API zusammen mit der Client-ID bestätigen.

Beispielcode für die Erteilung von Client-Anmeldeinformationen
 myTargetAuth <- myTarAuth(code_grant = FALSE, grant_type = "client_credentials", client_id = "XXXXXXXXXX", client_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") 

Beispielcode für das Autorisierungsschema Gewährung von Anmeldeinformationen für Agency-Kunden
 myTargetAuth <- myTarAuth(code_grant = FALSE, grant_type = "agency_client_credentials", client_id = "XXXXXXXXXX", client_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", agency_client_name = "xxxxxxxxx@agency_client") 

Bei Verwendung dieses Ansatzes wird die Authentifizierung ohne Interaktion mit der rmytarget-Paketwebsite durchgeführt.


Fazit


Hier endet unsere Tour, da heute mehr als 10.000 Pakete in den Haupt-Repositories veröffentlicht werden - CRAN und mehr als 80.000 auf GitHub. Abschließend möchte ich noch ein paar Worte zur Sicherheit ihrer Verwendung sagen.


Achten Sie zunächst darauf, ob es ein Paket gibt, das Sie für CRAN benötigen, da dies das offizielle Repository für die R-Sprache ist. Pakete unterliegen einer recht strengen Moderation durch ein Team von Spezialisten aus diesem Repository, bevor sie dort veröffentlicht werden. Das Paket wird dort erst veröffentlicht, wenn es den CRAN-Richtlinien vollständig entspricht. Wenn das Paket in CRAN vorhanden ist, können Sie daher sicher sein, dass seine Verwendung für Sie sicher ist.


Außerdem möchte ich darauf hinweisen, dass der Code aller Pakete für die R-Sprache offen ist. Sie können sich vor dem Start immer den Code einer ihrer Funktionen ansehen.


Versuchen Sie auch, Artikel über die Anwendung dieses Pakets zu finden. R-Benutzer sind durchaus bereit, Informationen auszutauschen, und Sie werden wahrscheinlich Fälle finden, in denen mehr oder weniger beliebte Pakete verwendet werden. Wenn sie über ein Paket schreiben, bedeutet dies, dass sie es verwenden und anscheinend niemand Probleme damit hatte.


Schauen Sie auch, wer der Autor des Pakets ist. Es gibt zwei Möglichkeiten, dies zu tun:


  1. Führen Sie nach der Installation des Pakets den Befehl utils::packageDescription("_")$Author
  2. Zeigen Sie die DESCRIPTION- Datei in der Paketquelle an.

Versuchen Sie, Informationen über den Autor in einem weltweiten Netzwerk zu finden. Wenn eine Person überhaupt öffentlich ist, ist es unwahrscheinlich, dass sie ihren Ruf riskiert, um ein Zeichen für den Zugriff auf Ihr Werbekonto und Ihre Werbematerialien zu erhalten. Oft ist ein Ruf teurer als Geld, das auf zweifelhafte Weise erhalten wird.


Wenn Sie ein Paket von GitHub installieren, installieren Sie es aus dem Repository des Autors und nicht aus einem Zweig. In der Regel gibt es viele solcher Zweige in gängigen Repositorys:


Ryandexdirekte Zweige


Tatsache ist, dass die Zweige vom Autor des Pakets nicht aktualisiert werden, was bedeutet, dass Sie nicht die aktuellste Version erhalten. Außerdem kann der GitHub-Benutzer, der den Zweig erstellt hat, Änderungen an seinem Code selbst vornehmen, unabhängig davon, ob Sie solchen Änderungen vertrauen oder nicht.


Sie können auf der GitHub-Seite sehen, aus welchem ​​Repository der Zweig erstellt wurde.



Übertragen Sie Ihre Token unter keinen Umständen an Dritte. Speichern Sie sie auf die gleiche Weise, wie Sie Kennwörter von Konten speichern. Auch wenn Sie ein Beispiel für einen Code anzeigen müssen, tun Sie dies, ohne Token anzugeben.


Denken Sie daran, dass in den allermeisten Fällen die Verwendung von R-Paketen für Sie völlig sicher ist. Ich hoffe, dieser Artikel überzeugt Sie davon und spricht darüber, wie der Autorisierungsprozess in der API der beliebtesten Werbeplattformen funktioniert.


Viel Glück, sei vorsichtig, aber gib nicht der Paranoia nach.

Source: https://habr.com/ru/post/de430888/


All Articles