Ergebnis 1 bis 20 von 288

Thema: Allgemeiner Fragenthread II

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    PHP:

    ist es möglich die folgenden Fälle zu hacken, muss ich also addslashes hinzufügen? :
    PHP-Code:
    $id $_GET['id'];
    $wert $array['blabl_'.$id]; 
    oder
    PHP-Code:
    $id $_GET['id'];
    removeDir('../ordner_'.$delete_id); 
    Edit: oder soll ich einfach is_numeric verwenden?

    Geändert von Drakes (21.05.2008 um 17:44 Uhr)

  2. #2
    Zitat Zitat von Drakes Beitrag anzeigen
    ist es möglich die folgenden Fälle zu hacken, muss ich also addslashes hinzufügen?
    Durchaus.

    Sinnvoller wäre jedoch $var = (int) $var; bzw. $var = int($var); zu verwenden, wodurch der Wert der Variable in eine Zahl umgewandelt wird (genauer gesagt wird der Datentyp umgewandelt).

  3. #3
    Zitat Zitat von mitaki Beitrag anzeigen
    Durchaus.

    Sinnvoller wäre jedoch $var = (int) $var; bzw. $var = int($var); zu verwenden, wodurch der Wert der Variable in eine Zahl umgewandelt wird (genauer gesagt wird der Datentyp umgewandelt).
    Meinst du intval() ? Kann man dann nicht z.B. ) in den String tun und so hacken?

  4. #4
    Zitat Zitat von Drakes Beitrag anzeigen
    Meinst du intval() ? Kann man dann nicht z.B. ) in den String tun und so hacken?
    intval(), ja, hab PHP schon eine Weile nicht mehr angefasst.

    Und nein, das in $var enthaltene Stringobjekt kann nicht mit der Skriptsprache selbst verknüpft werden, ein „)“ innerhalb des Strings ist also keine Gefahr.

  5. #5
    Javascript/Ajax

    Mit folgendem Script erstelle ich über die getdata.php einen DB Request und alsse ihn ausgeben

    Code:
    function loadData(nid)
    {
     if (xmlHttp) {
         xmlHttp.open('GET', 'getdata.php?nid='+nid+'', true);
         xmlHttp.onreadystatechange = function () {
             if (xmlHttp.readyState == 4) {
                 document.getElementById("comments").innerHTML = xmlHttp.responseText;
             }
         };
         xmlHttp.send(null);
     }
    }
    Dazu muss ich sagen, dass es um ein Newsscript geht, wobei der Ajax-Anteil die Kommentare ausgibt.
    Der Parameter "nid" steht für die News-Id. Das Problem ist nur folgendes:
    Das Newsscript wird in die index.php includet, und dort wird auch die Variable "nid" festgelegt, allerdings befindet sich der Javascript der index.php schon im Head-Teil, obwohl die Funktion (loadData) erst im body-Teil ausgeführt wird.
    Von daher kennt das Javascript die Variable nid noch nicht.

    Klar, man kann die Variable nid selbstverständlich auch vor dem Head-Teil in der index.php festlegen, aber das will ich nicht, ich will dass sie erst in der includeten Datei festgelegt wird.

    Also, wie kann ich die Funktion loadData ausführen, sodass nur Kommentare mit der entsprechenden Newsid ausgegeben werden?

  6. #6
    Zitat Zitat von Antares Beitrag anzeigen
    Javascript/Ajax

    Mit folgendem Script erstelle ich über die getdata.php einen DB Request und alsse ihn ausgeben

    Code:
    function loadData(nid)
    {
     if (xmlHttp) {
         xmlHttp.open('GET', 'getdata.php?nid='+nid+'', true);
         xmlHttp.onreadystatechange = function () {
             if (xmlHttp.readyState == 4) {
                 document.getElementById("comments").innerHTML = xmlHttp.responseText;
             }
         };
         xmlHttp.send(null);
     }
    }
    Dazu muss ich sagen, dass es um ein Newsscript geht, wobei der Ajax-Anteil die Kommentare ausgibt.
    Der Parameter "nid" steht für die News-Id. Das Problem ist nur folgendes:
    Das Newsscript wird in die index.php includet, und dort wird auch die Variable "nid" festgelegt, allerdings befindet sich der Javascript der index.php schon im Head-Teil, obwohl die Funktion (loadData) erst im body-Teil ausgeführt wird.
    Von daher kennt das Javascript die Variable nid noch nicht.

    Klar, man kann die Variable nid selbstverständlich auch vor dem Head-Teil in der index.php festlegen, aber das will ich nicht, ich will dass sie erst in der includeten Datei festgelegt wird.

    Also, wie kann ich die Funktion loadData ausführen, sodass nur Kommentare mit der entsprechenden Newsid ausgegeben werden?
    Irgendwie verstehe ich dein Problem nicht so recht. Du hast eine Funktion in einer Datei die includet wird. Diese Funktion willst du später mit einem Parameter aufrufen. Spätestens dort, wo du den Funktionsausruf mit PHP ausgeben lässt, müsste dir doch aber die News-ID bekannt sein, oder? Also im Stil von
    PHP-Code:
    while($row mysql_fetch_assoc($result)) {
      
    // ...
      
    echo '<a href="news.php?id='.$row['id'].'" onclick="javascript:loadData('.$row['id'].');">Kommentare</a>';
      
    // ...

    Oder verstehe ich das falsch?

  7. #7
    Also, der Javascript, welcher die Funktion erhält befindet sich im Head-Teil der index.php
    Danach (und das ist warscheinlich das Problem meines Scripts) wird die Funktion loadData() im Body-Teil der index.php aufgerufen.
    Das ist insofern problematisch, weil die Funktion auf diese Weise quasi immer aufgerufen wird, da sie in der index definiert ist, auch wenn das entsprechende News-Script nicht includet wird.
    Demnach habe ich den Body folgendermaßen definiert.

    PHP-Code:
    <?php if ($content == "news_single") { $nid=$_GET["nid"]; echo"<body onLoad='loadData($nid);'>"; } else { echo"<body>"; }  ?>
    Wobei der content=news_single hier für das newsscript steht.
    Am liebsten wäre es mir aber, wenn sich loadData() in der includeten Datei ausführen lässt, allerdings ohne klicken.
    Das Problem ist, dass mir hierbei nur noch <body onload=""> bleibt, aber in eine Datei, welche man includet gehört nunmal kein <body>

  8. #8
    Zitat Zitat von Antares Beitrag anzeigen
    Also, der Javascript, welcher die Funktion erhält befindet sich im Head-Teil der index.php
    Danach (und das ist warscheinlich das Problem meines Scripts) wird die Funktion loadData() im Body-Teil der index.php aufgerufen.
    Das ist insofern problematisch, weil die Funktion auf diese Weise quasi immer aufgerufen wird, da sie in der index definiert ist, auch wenn das entsprechende News-Script nicht includet wird.
    Demnach habe ich den Body folgendermaßen definiert.

    PHP-Code:
    <?php if ($content == "news_single") { $nid=$_GET["nid"]; echo"<body onLoad='loadData($nid);'>"; } else { echo"<body>"; }  ?>
    Wobei der content=news_single hier für das newsscript steht.
    Am liebsten wäre es mir aber, wenn sich loadData() in der includeten Datei ausführen lässt, allerdings ohne klicken.
    Das Problem ist, dass mir hierbei nur noch <body onload=""> bleibt, aber in eine Datei, welche man includet gehört nunmal kein <body>
    HTML-Code:
    <script type="text/javascript">loadData(<?php echo $_GET['nid']; ?>);</script>
    Kannst du überall unterbringen und dürfte auch valid sein.
    Wenn du die Daten aber eh ohne Userinteraktion anzeigen willst, frage ich mich, warum du sie nicht gleich mit ausgibst o_O

  9. #9
    Zitat Zitat von dead_orc Beitrag anzeigen
    HTML-Code:
    <script type="text/javascript">loadData(<?php echo $_GET['nid']; ?>);</script>
    Kannst du überall unterbringen und dürfte auch valid sein.
    Wenn du die Daten aber eh ohne Userinteraktion anzeigen willst, frage ich mich, warum du sie nicht gleich mit ausgibst o_O

    Joa..hätte ich auch drauf kommen können
    Trotzdem danke !

    Naja, ich lasse sie doch ausgeben, nur eben per Ajax. Sie aktualisieren sich eben nur nicht im Shoutboxstil, sondern nur dann, wenn jemand einen Kommentar schreibt, was mich auch gleich zur zweiten Frage führt, denn genau das möchte ich auch irgendwie erreichen..

    Bei meinem Eingabeformular benutze ich folgenden Code im Form Tag
    HTML-Code:
    onsubmit='saveData(); return false;'
    Schreibe ich jetzt hinter savaData(); noch loadData(); so trägt er den Kommentar zwar ein, aber ich lande wieder auf der index ohne $content.

    Wie kann ich also am besten die Kommentare aktualisieren, wenn jemand einen Eintrag verfasst?

  10. #10
    HTML-Code:
    <script type="text/javascript">loadData(<?php echo $_GET['nid']; ?>);</script>
    Man sollte niemals eine Benutzereingabe direkt ausgeben bzw. anders weiterverwenden.
    Man sollte die Eingabe immer erst prüfen bzw. dafür sorgen, das keine gefährlichen Daten drin vorkommen.
    In diesem Fall kämme wohl intval in Frage.

  11. #11
    Zitat Zitat von Xardas der Dunkle Beitrag anzeigen
    HTML-Code:
    <script type="text/javascript">loadData(<?php echo $_GET['nid']; ?>);</script>
    Man sollte niemals eine Benutzereingabe direkt ausgeben bzw. anders weiterverwenden.
    Man sollte die Eingabe immer erst prüfen bzw. dafür sorgen, das keine gefährlichen Daten drin vorkommen.
    In diesem Fall kämme wohl intval in Frage.
    Javascript und HTML kann ja sowieso vom Benutzer geändert werden, also was kann denn in diesem Falle passieren?

  12. #12
    Zitat Zitat von Drakes Beitrag anzeigen
    Javascript und HTML kann ja sowieso vom Benutzer geändert werden, also was kann denn in diesem Falle passieren?
    Der Inhalt der Seite kann über die URL beinflußt werden, in diesem Falle könnte beliebiges HTML eingeschleust werden. Damit lässt sich beliebiger Inhalt in die Seite einfügen und damit kann man den User wunderbar täuschen, indem man falsche Informationen einbindet. Oder man stiehlt dem User einfach seine Cookies und damit möglicherweise seine Login-Informationen. Im Zweifelsfalle wartet man, bis der User sein Passwort eingibt und schickt es dann an den Angreifer. XSS sollte man nicht unterschätzen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •