Frage wegen API



  • Kann ich irgendwie das einbauen wenn ich diesen code mehrmals auf der seite benutze z.B. eine config datei machen, dass man dort den apikey für apikey=YOUR-API-KEY eintragen kann dass man nicht überall einzeln eintragen muss

  • Du willst den API-Key also im JavaScript öffentlich hinterlegen?!

    Wie meinst du das? also ich wollte nachfragen ob es eine möglichkeit gibt irgendweiene datei zu machen in der der apikey hinterlegt ist und dass man nicht wenn ich mehrere solche abfragen habe den apikey immer extra einzutragen

  • Solange du aber JavaScript verwendest, kann ich Deinen API-Schlüssel auslesen aus der Website, vollkommen egal, wie Du den ablegst.

    Dateisystem-Zugriffe sind zudem in JS immer noch experimentell, was aus Sicherheitsgründen auch gut ist. Und auf dem Sever kannst Du das nicht ablegen, weil JavaScript nativ da schon mal gar nicht rankommt ( wenn man Frameworks mal außer Acht lässt ).


    API-Calls macht man Server seitig und gibt nur die Antworten zurück, die im Client relevant sind.

  • Hi Elton,


    wenn du dein API Key in JavaScript so eintragst hat jeder Browserbesucher auf diesen Zugriff.


    Du kannst die API Abfrage dynamisch mit PHP programmieren. Dabei kannst du den API Key in eine zentrale Variable ablegen. Diese fügst du dann einfach den Abfragen hinzu.


    Was du auch machen kannst ist, alle Abfragen in einem Array speichern und dann mittels einer Foreach-Schleife über das Array iterieren und den Platzhalter API Key durch den API Key zu ersetzen. Dann kannst du die Abfragen ausführen und arbeitest mit dem Array weiter.


    Eine Idee.


    Grüße

  • Die Steuerung über die verschiedenen Calls kann ich auch leicht über einen Parameter feuern, da benötige ich kein Array, das alle vorhält.

    Kann man natürlich machen, aber besteht eigentlich kein Grund zu.


    REST APIs sind i.d.R. immer ähnlich aufgebaut, der Aufruf erfolgt in ähnlicher Form, wie hier:

    Code
    1. https://api.example.com/<api-key>/add
    2. https://api.example.com/<api-key>/delete

    Die Daten für die Funktionen add und delete werden dann per POST übermittelt, häufig in Form von JSON.


    Das alles würde ich aber PHP seitig machen und aus dem Client heraus nur die gewünschte Funktion und erforderlichen Daten übermitteln:

    Code
    1. https://www.examle.de/mein-api-wrapper/add
    2. https://www.examle.de/mein-api-wrapper/delete

    Auch hier wieder: Daten im POST.

    Kein API-Key sichtbar!

  • Es geht ja nicht darum, dass man den key nicht auslesen kann ich möchte ja nur dass man den key wenn ich das script mehrmals nutze nicht immer einzeln eintragen muss

  • Es geht ja nicht darum, dass man den key nicht auslesen kann

    Ach so... Dann ist es Dir egal, dass ich mir den Key schnappen und den API Server mit ungewollten Calls über Deinen API-Key befeuere?

    Dann würde ich die Seite am besten noch bekannter machen im Netz, damit es die böse Seite der Macht nicht so schwer hat, die Einladung zu übersehen.


    Macht ihr euch eigentlich gar keine Gedanken zum Thema Sicherheit?!

    :/

  • Ach so... Dann ist es Dir egal, dass ich mir den Key schnappen und den API Server mit ungewollten Calls über Deinen API-Key befeuere?

    Dann würde ich die Seite am besten noch bekannter machen im Netz, damit es die böse Seite der Macht nicht so schwer hat, die Einladung zu übersehen.


    Macht ihr euch eigentlich gar keine Gedanken zum Thema Sicherheit?!

    :/

    Nun ja wenn die seite privat ist :/. Aber wenn dir das Thema Sicherheit so gefällt kannste mir ja einen Code dazu schicken?!

  • Nun ja wenn die seite privat ist . Aber wenn dir das Thema Sicherheit so gefällt kannste mir ja einen Code dazu schicken?!

    Na bei der Einstellung glaube ich nicht ernsthaft, dass Dich das Thema interessiert.

    Ich kann da nur hoffen, dass das wirklich privat ist und nicht öffentlich im Netz erreichbar sein wird.


    Denn mach halt, wie Du meinst.

  • Naja, einen möglichen Lösungsweg habe ich Dir bereits genannt, komplette Lösungen/Scripte poste ich im allgemeinen nicht, das machen andere.

    Meistens dann zwar umständlicher, aber die Erfahrung hat gezeigt, dass dann lieber das genommen wird, was einem fertig zugeworfen wird, anstatt sich damit zu befassen.


    Kurz nochmal zusammengefasst:

    Man legt keine Authentifizierungsdaten in JS ab, da hat jeder mit ein bisschen Browserkenntnis immer Zugriff drauf!

    Alternative: Serverseitig, bspw. PHP evtl. in Verbindung mit SQL, da sind den Möglichkeiten wenig Grenzen gesetzt.

    Selbst dann könntest Du per JS ( XmlHttpRequest ) Deine Anwendung aufbauen, wie in #6 bereits angedeutet.

  • Zitat

    ob es dafür einen Weg gibt um dies zu schützen aber ich meine ich habe dazu schonmal ein Thema gemacht

    Ich kann mich auch erinnern, dass es dazu schon Mal einen Thread gab, aber ich finde ihn auf die Schnelle nicht wieder. Die Lösung besteht darin, die API in PHP z. B. mit file_get_contents zu lesen und auszugeben und im Javascript dann dieses PHP-Skript zu lesen. Dann ist der Key verborgen.