Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] AJAX: PHP gegen Zugriff von außen absichern

Einklappen

Neue Werbung 2019

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

  • [Erledigt] AJAX: PHP gegen Zugriff von außen absichern

    Hallo zusammen,

    ich wollte wissen, ob es möglich ist, ein PHP-Script gegen Zugriff von Fremden Servern abzusichern?

    Folgende Konfiguration:
    Code:
    	$.ajax( {
    		url : '/ajax.php',
    		success : function(data) {
    			
    		},
    		complete : function(XMLHttpRequest, textStatus) {
    			
    		},
    		dataType : 'json',
    		cache : false
    	});
    Jetzt möchte ich, dass man, nur wenn man auf beispielsweise "http://www.mustermann.de" ist, die Inhalte der ajax.php abrufen kann. Wenn jemand Fremdes versucht, dass JavaScript auf seiner Seite einzubetten, soll es erkannt und verhindert werden.

    Ich habe mir überlegt, dass man es mit einer Session lösen könnte, aber dummerweise handelt es sich bei den Inhalten um statische HTML-Seiten, wegen der hohen Serverlast, die sonst zu Stande kommen würde.

    Ist das sonst irgendwie möglich und wenn ja, wie?
    Fynder - http://www.fynder.de - Tutorials zum Thema Technik


  • #2
    Naja 100% Schutz wirst du nie haben. Schließlich ist das ein ganz normaler HTTP Request und den kann man immer automatisch durchführen. Auch wenn eine Benutzerauthentisierung davor steht.

    Um es etwas schwieriger zu machen würde ich entweder auf Session oder Referer setzen, aber beides hilft nur zu einem bestimmten Grad.

    Kommentar


    • #3
      man kann das doch über htaccess steuern.

      Kommentar


      • #4
        Und wie? Was möchtest du machen dass der "Angreifer" nicht auch kann?

        Kommentar


        • #5
          na indem man nur den localhost oder eine bestimmte domaine auf die Dateien berechtigt.
          eine rewrite rule anlegen, die genau die dateien nur vom localhost erlaubt.

          Kommentar


          • #6
            Die Datei wird trotzdem vom Benutzer geladen. Somit kannst du ja nicht den Host einschränken von dem die Datei aufgerufen wird!

            Kommentar


            • #7
              Sowas ähnliches habe ich mir bereits gedacht. Ich habe mir nur überlegt, ob man in der PHP-Datei vielleciht prüfen kann, ob sie via absolutem (http://www.mustermann.de/ajax.php) oder via relativem Pfad (/ajax.php) eingebunden wurde. Aber ich denke das geht leider nicht oder?
              Fynder - http://www.fynder.de - Tutorials zum Thema Technik

              Kommentar


              • #8
                Naja der HTTP Request muss sowieso immer den kompletten Pfad angeben. Der relative wird ja nur vom Browser verstanden und entsprechend erweitert.

                Kommentar


                • #9
                  Spricht eigentlich etwas dageben, es wie folgt zu lösen? Damit wäre der PHP-Code ausserhalb dem "Public"-Ordner.

                  www.mustermann.de/ajax.php enthält somit nur folgendes:
                  PHP-Code:
                  <?php

                    
                  require_once('../application/ajax/ajax.php');

                  ?>
                  Grüße
                  Thomas

                  Kommentar


                  • #10
                    Es geht ja auch nicht umd ie PHP Datei selber sondern einfach darum dass die Daten die dieser Aufruf liefert nicht einfach so von einem anderen Server abgerufen werden sollen!

                    Kommentar


                    • #11
                      Ich habe es bei mir so gelöst das mein Framework ein Hashkey mitsendet. Wie dieser Hashkey aussehen soll weiss natürlich nur mein System. Beim AJAX Call wird demnach geprüft ob der Key noch gültig ist (man kann einstellen, wie lange der Key gültig ist).

                      Kommentar


                      • #12
                        Heißt aber so nicht, dass ich nicht an die Ajax-Daten komme.
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar


                        • #13
                          Welchen Zweck soll diese Maßnahme haben? Aus deinem ersten Beitrag lese ich, dass der Schutz eine Form von DoS verhindern soll, korrekt?

                          Ich denke ohne Sessions bleibt das HTTP Protokoll zustandlos, sodass auch keine Kontrolle der Requests möglich ist...

                          Kommentar


                          • #14
                            Du könntest bspw. einen Hash an jede Ajax-Anfrage anhängen. Das Script auf dem Server würde dann nach nem bestimmten Muster prüfen welches nur der Server kennt. Vielleicht sogar alle paar Stunden ein wechselndes?

                            Wenn`s serverseitig nicht hinkommt, wird beim zweiten mal die IP-Adresse für 24h temporär gesperrt und eine Meldung "Nice Try - Write your own Code!" wird ausgegeben.

                            Über ne Referer-Afrage kannste das ganze ja nicht lösen...


                            // oh hab den einen Beitrag von stayInside übersehen, eigentlich dasselbe. hmpf

                            Kommentar


                            • #15
                              Das Script auf dem Server würde dann nach nem bestimmten Muster prüfen welches nur der Server kennt.
                              Woher soll der Server das kennen? Und was soll mich hindern, das Muster auszulesen und die URI anderweitig zu verwenden.
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X