Ankündigung

Einklappen
Keine Ankündigung bisher.

API-Zugriff

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • API-Zugriff

    Hallo,

    ich habe folgendes Problem:
    Ich programmiere zurzeit eine API, die u.A. Benutzerkonten erstellen soll. Jedoch soll die API nur von meinem Programm benutzt werden können. Ich habe von einer Methode wie einem „Bearer“ im Header gehört, aber da die API über JavaScript benutzt wird, kann man den Bearer ja sehen und die API auf den eigenen Seiten verwenden. Wie kann ich in meinem PHP-Skript (API) prüfen, das der Request von meiner Seite kommt?

    Beste Grüße,
    Jonah

  • #2
    Du kannst CSRF-Token bei deiner Seite mitliefern und auf diesen prüfen.

    Aber im Endeffekt gibt es keine Möglichkeit zu prüfen, ob ein Request "von der Seite" kommt. Ein HTTP-Request ist ein HTTP-Request. Jeden Request, den ein Browser senden kann, kann man auch ohne Browser senden.

    Kommentar


    • #3
      Hi,

      du kannst mit CSRF-Tokens arbeiten, das schützt zumindest davor, das Fremde deinen Usern Requests unterschieben oder dass jemand einfach so deine API anzapft.

      Ansonsten bist du aber relativ machtlos, sobald du einen authentifizierten User hast der die Requests absetzt, ist es praktisch unmöglich festzustellen ob der Request vom Browser via Javascript ausgeführt wir oder PostMan, CURL, etc zum Einsatz kommt.

      Du solltest dir eher überlegen, ob das überhaupt ein Problem für dich darstellt. Selbst wenn einer sich die Mühe macht, deine API anzuzapfen, kann er nicht mehr als vorher.

      Kommentar


      • #4
        Danke für eure Hilfe!

        Kommentar


        • #5
          Moin,

          du kannst auch noch eine Middleware-Schicht zwischen JavaScript und API schieben, um die API von der Middleware aus serverseitig aufzurufen.
          Damit wären zumindest die API und der Bearer-Token versteckt. Über die Middleware ließen sich noch andere Dinge, wie Authentifizierung usw., abhandeln - das kommt dann aber auf den konkreten Anwendungsfall an.
          [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
          [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

          Kommentar


          • #6
            Mein kann auch ein JWT (JSON Web Token) nehmen, diesem kann man eine Gültigkeitsdauer geben (z.B. 5 Minuten oa.) und dem Client mitteilen. https://jwt.io/
            Dies löst zwar nicht alle Probleme, aber ist ein gängiges Vorgehen.

            Kommentar


            • #7
              Public Key Authentication...

              Sender (dein Programm) hält seinen privaten Schlüssel, der Empänger (API) bekommt den Public key.
              Sender erstellt mit Hilfe seines privaten Schlüssels eine Signatur und schickt sie dem Empfänger.
              Der Empfänger kann mit dem public key die Signatur überprüfen.

              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                Zitat von lstegelitz Beitrag anzeigen
                Public Key Authentication...

                Sender (dein Programm) hält seinen privaten Schlüssel, der Empänger (API) bekommt den Public key.
                Sender erstellt mit Hilfe seines privaten Schlüssels eine Signatur und schickt sie dem Empfänger.
                Der Empfänger kann mit dem public key die Signatur überprüfen.
                Ist im übrigen Teil von JWT. Der Token wird vom Server mit dem Private Key signiert und er kann ihn damit auch verifizieren. Der Client kann auf die Meta Daten wie z.B. Ablaufdatum zugreifen etc.

                Kommentar

                Lädt...
                X