[Ajax] blutiger Start

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Dr. Cox, 27. Juli 2011 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 27. Juli 2011
    blutiger Start

    Hey, ich habe mit Ajax angefangen und mich ein wenig in Tutorials und Beispiele eingelesen und auch eben meine erste Neuladung eines Divs geschafft ohne kompletten Reload! AAAAWWWWW YEEAAHHHH!
    Aber entweder mach ichs auf die schlechteste Art, oder ist das normal das man den Code rauslesen kann?
    Ich meine ich habe ganz simpel angefangen:

    Code:
    <!-- first.html -->
    <html>
     <head>
     <script type='text/javascript'>
     function pups() {
     if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
     xmlhttp=new XMLHttpRequest();
     } else {// code for IE6, IE5
     xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
     }
     xmlhttp.onreadystatechange=function() {
     if (xmlhttp.readyState==4 && xmlhttp.status==200) {
     document.getElementById('txtHint').innerHTML=xmlhttp.responseText;
     }
     }
     xmlhttp.open('GET','second.php',true);
     xmlhttp.send();
     }
     </script>
     </head>
     <body>
     <div style='background-color: blue; color: white; cursor:pointer;' onclick='pups();'>KLICK MICH</div>
     <div id='txtHint'>Das hier soll sich ändern!</b></div>
     </body>
    </html>
    Code:
    <?php
    // second.php
    echo rand(1,100);
    ?>
    Bei einem Klick auf das erste Div, wird der Inhalt des zweiten Divs halt mit einer Zufallszahl gefüllt.
    Aber man kann doch jetzt ganz easy den Quellcode ansehen und schauen welche Datei ich auf dem Server aufrufe und welche Parameter ich überge etc?
     
  2. 27. Juli 2011
    AW: blutiger Start

    Du musst uns schon sagen was du genau machen möchtest

    Was meinst du genau mit dem Quelltext verstecken? Du könntest als erstes mal dein Javascript auslagern mit

    HTML:
    <head>
    <script type="text/javascript" src="meinjavascriptcode.js"></script>
    </head>
    
    In diesem Beispiel ist dein Javascript Code schonmal aus deinem HTML verschwunden und nicht mehr direkt einsehbar in diesem Beispiel liegt die .js in dem selben Verzeichnis wie deine HTML Datei

    edit:
    Falls das nicht so rüberkam hat powernator natürlich recht und man kann den Code immer noch auslesen deshalb frage ich was du mit verstecken meintest
     
  3. 27. Juli 2011
    AW: blutiger Start

    Ja es ist normal, dass man den Code auslesen kann. Auch wenn er in einer ausgelagerten Datei liegt, kann man das.

    Wieso machst du dir so eine Mühe und greifst nicht einfach auf eine Library zurück?

    Code:
    function pups() {
     $("#txtHint").load("second.php");
    }
    Das wäre dein Code, wenn du mit JQuery arbeitest
     
  4. 28. Juli 2011
    AW: blutiger Start

    Ich habe nicht einmal das Wort "verstecken" geschrieben ^^
    Keine Ahnung warum du dich daran so festgebissen hast Triple_HXH.

    Mir gings letztendlich nur darum zu erfahren, obs an meinem "Programmierstil" im Bezug auf Ajax nun der Grund war, das man einfach alles nachsehen kann wie ich was aufrufe, wo es liegt, welche Parameter ich übergebe und was ich sonst noch für Schweinereien vorhabe einsehen kann.
    Aber scheinbar ist das normal...

    Mein "Problem" war und ist halt nur, das doch jetzt irgendein Dussel daherkommen kann, sieht in meinem Quelltext und sieht dort ~ Aaahaaa, er ruft die Datei second.php auf und übergibt den Parameter so und so (falls Parameter übergen werden würden) und dann wird hier dies und jenes gemacht, ja dann ruf ich die Seite einfach mal so auf ~
    Und andere Spielereien.
     
  5. 28. Juli 2011
    AW: blutiger Start

    Das ist korrekt. Murdoc oder jemand anders kann das sicher noch konkretisieren, aber du kannst deine Skripte trotzdem absichern, z.B. über htaccess verhindern, dass man die Dateien direkt über den Browser aufruft und nicht über deine Seite.
     
  6. 28. Juli 2011
    AW: blutiger Start

    nein, ob xhr oder normal macht keinerlei unterschied für den webserver, da beide identisch sind.

    man könnte natürlich dynamisch generierte tokens auf basis von sessions erzeugen die auf server-seite validiert werden, doch selbst die kann man mit ein wenig know-how rausfischen und an die anfrage selber anhängen.

    zusammengefasst: dem server ist es piep-egal wer die anfrage absetzt solange er sie verarbeiten kann. es gibt div. methoden ajax-anfragen zu limitieren, doch selbst diese lassen sich nachbauen und separat absetzten.

    bestes beispiel: firebug öffnen, ajax-anfrage absetzten und anschließend im tab "netzwerk" unter "HXR" nachsehen

    für den otto-normal benutzer von webseiten reicht es wohl einen eigenen http-header der anfrage hinzuzufügen, welchen man dann auf server-seite prüft.

    Code:
    var xhr = new XMLHttpRequest;
    xhr.open("GET", "script.php", true);
    xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
    xhr.send();
    PHP:
    if (!isset( $_SERVER [ 'HTTP_X_REQUESTED_WITH' ]) 
     || 
    $_SERVER [ 'HTTP_X_REQUESTED_WITH' ] !==  'XMLHttpRequest' )
        exit(
    'zugriff verweigert' );

    // ...
    dieser header wird im übrigen von den gänigsten frameworks automatisch hinzugefügt.
     
  7. 29. Juli 2011
    AW: blutiger Start

    Du hast Recht, man kann das einsehen und theoretisch auch ziemlich leicht nachstellen oder nachbauen. Gerade deshalb ist es wichtig, dass man Eingabefelder nicht nur clientseitig, sondern vor allem serverseitig validiert, da es sonst sehr schnell zu Problemen kommen kann.

    greez
     
  8. 30. Juli 2011
    AW: blutiger Start

    Hmm alles klar, danke. Habt alle natürlich ne BW.
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.