Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP CORS-Header

Einklappen

Neue Werbung 2019

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

  • PHP CORS-Header

    Hallo,

    ich arbeite gerade an eine PHP REST-API für meine Angular Anwendung.

    Nun habe ich jedoch das Problem dass die CORD-Header nicht so funktionieren wie sie sollten.

    Mein Code sieht aktuell so aus:
    PHP-Code:
      header("Access-Control-Allow-Origin: https://test.meine-domain.com"false);  header("Access-Control-Allow-Methods: GET");  header('Content-Type: application/json'); 
    Das Problem dabei ist das der Access-Controll-Allow-Origin Header nicht so funktioniert wie er soll.
    Mein Freund kann die Daten trotzdem noch laden obwohl es es nur über meine Domain funktionieren sollt.

    Habe es auch schon mit http und ohne http/https getestet, bringt aber leider auch nichts.

    Hatt da jemand eine Idee woran das Liegen könnte oder giebt es da noch andere Wege um den Zugriff nur über die Domain zu erlauben?

    Liebe Grüße

  • #2
    Schau doch mal in deinem Browser ob die Header auch korrekt gesetzt werden. Im Chrome F12 (Seite neuladen) und dann im Tab Netzwerk.

    Auch ist dies keine absolute Sicherheit, wenn der Browser die Header ignoriert, kann man die URL natürlich weiterhin aufrufen.

    Kommentar


    • #3
      Zitat von Zeichen32 Beitrag anzeigen
      Schau doch mal in deinem Browser ob die Header auch korrekt gesetzt werden. Im Chrome F12 (Seite neuladen) und dann im Tab Netzwerk.

      Auch ist dies keine absolute Sicherheit, wenn der Browser die Header ignoriert, kann man die URL natürlich weiterhin aufrufen.
      Wir sowohl bei der Anfrage als auch bei der Antwort gesetzt

      EDIT:
      Wäre es eventuell so besser als mit dem CORS-Headern?
      PHP-Code:
      if($_SERVER['HTTP_REFERER'] !== 'https://test.meine-domain.com/'){
              
      http_response_code(401);
              echo 
      json_encode(
                  array(
      "result" => array("title" => 'Unauthorized'"detail" => "Your request wasn’t executed due to failed authentication."))
              );
          } 

      Kommentar


      • #4
        Der Referer wird zukünftig von einigen Browsern nicht mehr befüllt, also den kannst du eigentlich komplett ignorieren.

        Wenn du willst, dass nur bestimmte Clients auf die API zugreifen können, dann brauchst du eine Authentifizierung. Zum Beispiel mittels JWT.

        Kommentar


        • #5
          Auf den HTTP_REFERER Header sollte man sich nicht verlassen, dieser wird nicht immer vom Browser mit gesendet und wird in naher Zukunft wahrscheinlich komplett rausfliegen.
          CORS Header ist schon das richtige, wenn es dir darum geht den Browser anzuweisen den Zugriff von anderen Domains zu verbieten. Am Ende sollte dir aber bewusst sein, das ein API nichts anderes ist, wie jede andere Seite welche du mit dem Browser aufrufen kannst. Möchtest du den Zugriff effektiv einschränken, solltest du über eine Authentifizierung nachdenken.

          Kommentar


          • #6
            Zitat von Zeichen32 Beitrag anzeigen
            Auf den HTTP_REFERER Header sollte man sich nicht verlassen, dieser wird nicht immer vom Browser mit gesendet und wird in naher Zukunft wahrscheinlich komplett rausfliegen.
            CORS Header ist schon das richtige, wenn es dir darum geht den Browser anzuweisen den Zugriff von anderen Domains zu verbieten. Am Ende sollte dir aber bewusst sein, das ein API nichts anderes ist, wie jede andere Seite welche du mit dem Browser aufrufen kannst. Möchtest du den Zugriff effektiv einschränken, solltest du über eine Authentifizierung nachdenken.
            Das mit der Authentifizierung ist da so ne sache da ich ja nicht einfach einen API-Key mitschicken kann, da den der Benutzer theoretisch in der Netzweranalyse des Browsers sieht oder gibt es da irgend eine möglichkeit

            Kommentar


            • #7
              Wo ist das Problem dabei? Es gibt auch sowas wie JWT (JSON Web Token) welches öffentliche Payload Daten enthalten kann, sowie verschlüsselte welche nur der Server lesen kann.

              Kommentar


              • #8
                Zitat von Mario1996 Beitrag anzeigen
                Das mit der Authentifizierung ist da so ne sache da ich ja nicht einfach einen API-Key mitschicken kann, da den der Benutzer theoretisch in der Netzweranalyse des Browsers sieht oder gibt es da irgend eine möglichkeit
                Warum sollte das ein Problem sein? Wenn du dem Benutzer nicht traust, dann solltest du ihn besser komplett aussperren und alles nur für vertrauenswürdige User per Login erlauben. Aber selbst den Login könnte ein Benutzer an jemand anderen weitergeben.

                Was einige Anbieter machen ist den Login auf eine Telefonnummer oder RSA-Token-Generator zu binden. Das schränkt die Möglichkeiten des Missbrauchs zumindest ein wenig ein.

                Der Aufwand richtet sich daran, wie schützenswert deine Seite ist. Gehts um eine Dating-Portal? Dann würde ich nicht so viel Aufwand rein stecken. Gehts um eine Payment-Portal mit Milliarden Beträgen Umsatz? Dann würde ich einige Spezialisten inkl. Rechtsanwälte ins Boot holen, weil so simpel ist das dann auch nicht mehr.

                Kommentar


                • #9
                  das finazamt, jedeenfalls in Berlin, nuzt certs

                  Kommentar

                  Lädt...
                  X