+ Antworten
Ergebnis 1 bis 6 von 6

Thema: Code Injektion

  1. #1
    War schon öfter hier
    Registriert seit
    08.12.2009
    Beiträge
    108
    Bedankte sich
    3
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard Code Injektion

    Wenn ich den folgenden Javascript auf einer Modulposition platziere, gibt es dann irgendwelche bedenken bzgl. Code Injektion.
    Code:
    function (form)
    	{
    	a=eval(form.a.value);
    	b=eval(form.b.value);
    	c=eval(form.c.value);
    	x1=a*b*c);
    	form.x.value = x1;
    	}
    
    </script>
    
    <table>
    <tr>
    <td><input type="text" size="3" name="a"></td>
     <td><input type="text" size="3" name="b"></td>
     <td><input type="text" size="3" name="c"></td>
     <td><input type="text" size="3" name="x"></td>
    </tr>
    </table>

  2. #2
    Neu an Board Avatar von romacron
    Registriert seit
    23.03.2009
    Beiträge
    27
    Bedankte sich
    0
    Erhielt 6 Danksagungen
    in 6 Beiträgen

    Standard eher nicht

    Hallo Sailor,
    denke nicht, dass dies der richtige Weg ist ein paar Zahlen über die Webseite zu multiplizieren. An der Stelle stört mich besonders das Eval.

    Das eval kannst du getrost weg lassen. Javascripte im Browser direct zu prüfen bzw. abzusichern ist nicht möglich. Wichtger ist, dass wenn der Wert x(andere Werte auch) an dein php gesendet wird zu prüfen.
    Joomla hat dafür Input und outputFilter , ebenso Quote für DB abfragen.

    warum nicht gleich
    Code:
    function multiply(){
    a=form.a.value;
    b=form.b.value;
    c=form.c.value;
    if(a&&b&&c){
    var returnValue=a*b*c;
    }
    form.x=returnValue;
    }
    
    ..da sind noch keine FehlerAbfänger drinnen. Keep it simple

  3. #3
    Verbringt hier viel Zeit
    Registriert seit
    24.01.2006
    Beiträge
    594
    Bedankte sich
    108
    Erhielt 359 Danksagungen
    in 203 Beiträgen

    Standard

    Zitat Zitat von romacron Beitrag anzeigen
    Hallo Sailor,
    denke nicht, dass dies der richtige Weg ist ein paar Zahlen über die Webseite zu multiplizieren. An der Stelle stört mich besonders das Eval.
    Das Eval ist bei Javascript nicht so stark wie in PHP. Hier an dieser Stelle ist es sogar zwingend notwendig, wenn die Funktion für verschiedene Formulare nutzbar sein soll. Denn "form" bezeichnet nicht direkt ein bestimmtes Formular, sondern ist in diesem Fall ein String, der den Formularbezeichner enthält. Dieser muss dann per eval in einen validen Javascript Bezeichner umgewandelt werden. (Alternativ könnte man auch die Mootoolsfunktion $E() nutzen)

    Pseudomäßig "Sichern" könntest du dein Javascript indem du alle Zahlen explizit in Zahlen umwandelst mit .toInteger(). Ansonsten gilt:

    Zitat Zitat von romacron Beitrag anzeigen
    Javascripte im Browser direct zu prüfen bzw. abzusichern ist nicht möglich. Wichtger ist, dass wenn der Wert x(andere Werte auch) an dein php gesendet wird zu prüfen.
    Ein bisschen einschränken muss man diese Aussage natürlich, wenn man irgendwelche schmutzige Sachen mit Request Werten macht, dann ist eine Javascript Validierung natürlich möglich und sinnvoll.

  4. #4
    Neu an Board Avatar von romacron
    Registriert seit
    23.03.2009
    Beiträge
    27
    Bedankte sich
    0
    Erhielt 6 Danksagungen
    in 6 Beiträgen

    Standard der Glaubenskrieg

    Hallo bembelimen,

    alles richtig was du sagst. Die ursprüngliche Frage zielte auf "injections".
    Javascript an sich bietet keine Möglichkeit valide Daten zu übermitteln. Es muss strict alles geprüft werden was an PHP übermittelt wird. Ganz gleich ob der Request "normal" per ajax oder sonst wie was ausgeführt wird.
    Daten die an die Serverseite geliefert werden sind defacto als unsicher zu betrachten!
    Mit dem Gesichtspunkt "eval ist in js nicht so stark wie in php" und meiner vorherigen Anführung, kann man zum Schluss gelangen. "Egal was js auf der Seite macht, wenns reinkommt muss es geprüft und entwertet werde"

    könntest Du "schmutzige Sachen" einmal ausführen?

  5. #5
    War schon öfter hier
    Registriert seit
    08.12.2009
    Beiträge
    108
    Bedankte sich
    3
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    Ich lasse den User 2 Formularfelder beschreiben. Der User drückt auf den Button und das Ergebnis wird auf der gleichen Seite ausgegeben.
    Beispiel: User trägt in das 1. Feld die "2" ein und in das 2. Feld die "3". Er drückt auf den Button und es wird mit o. g. Code die "6" erreichnet. Ich geb im Formular (value="Variable") das Ergebnis aus.

    Kann man da mir Code Injection irgendwelchen Schindluder betreiben?

  6. #6
    Neu an Board Avatar von romacron
    Registriert seit
    23.03.2009
    Beiträge
    27
    Bedankte sich
    0
    Erhielt 6 Danksagungen
    in 6 Beiträgen

    Standard

    Kann nichts passieren.
    nur das eval kann weg, das verbraucht nur unnötig resourcen.

+ Antworten

Lesezeichen

Berechtigungen

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