Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 21 bis 40 von 53

Thema: [Vorstellung] tHE fAKE pAGE!

  1. #21
    Die bezüglich der hochzuladenden Datei. Sie liegen nebeneinander.

  2. #22
    Und wie mach ich das? Das ist doch ein <input> Element.

  3. #23
    Zitat Zitat von deadshox Beitrag anzeigen
    Und wie mach ich das? Das ist doch ein <input> Element.
    Da hat er recht (nicht mit input an sich, aber mit <input type="file" />). Bei den gängigen Browsern unstylebar, wohl aus Sicherheitsgründen (es gibt da meines Wissens ein paar JS Tricksereien, aber die sind verdammt umständlich und halt... JS ^^).

    Zitat Zitat von deadshox
    Wasn das fuer ne Aufloesung? Das is aber nich Standart. -.-
    Naja habs mal nen bissel angepasst, hoffe es ist nun genhem. ;]
    Was ist schon Standard? Bei 16:10 Bildschirmen passt es perfekt (1449/900=1.6). Hat ja nicht jeder 4:3 Monitore.

  4. #24
    Zitat Zitat von NPC Fighter Beitrag anzeigen
    Da hat er recht (nicht mit input an sich, aber mit <input type="file" />). Bei den gängigen Browsern unstylebar, wohl aus Sicherheitsgründen (es gibt da meines Wissens ein paar JS Tricksereien, aber die sind verdammt umständlich und halt... JS ^^).
    Dann lass ichs lieber so wie es ist.

    Zitat Zitat von NPC Fighter Beitrag anzeigen
    Was ist schon Standard? Bei 16:10 Bildschirmen passt es perfekt (1449/900=1.6). Hat ja nicht jeder 4:3 Monitore.
    Sieht sie nun eigentlich schon besser aus in deiner Aufloesung?

  5. #25

  6. #26
    Zitat Zitat von NPC Fighter Beitrag anzeigen
    Da hat er recht (nicht mit input an sich, aber mit <input type="file" />). Bei den gängigen Browsern unstylebar, wohl aus Sicherheitsgründen (es gibt da meines Wissens ein paar JS Tricksereien, aber die sind verdammt umständlich und halt... JS ^^).
    Weiß du, früher hatten wir so was, das nannte sich &nbsp;...

    (Außerdem hätte er dem Button ein margin-left geben können, aber der non-breaking space erfüllt seinen Zweck da schon ganz gut.)

  7. #27
    Zitat Zitat von Jesus_666 Beitrag anzeigen
    Weiß du, früher hatten wir so was, das nannte sich &nbsp;...

    (Außerdem hätte er dem Button ein margin-left geben können, aber der non-breaking space erfüllt seinen Zweck da schon ganz gut.)
    Also, dass wir jetzt beide nicht aneinander vorbeireden:

    Wir meinen beide das hier, richtig?



    Und wir meinen beide den Abstand zwischen dem weißen Feld links und dem Button rechts?

    Da kann man wirklich weder mit nem Einzug noch mit erzwungenen Leerzeichen was machen, die hängen zusammen.

  8. #28
    Ach stimmt, das haben die bei HTML ja als ein Element umgesetzt. Gut, dann geht's nicht.

  9. #29
    Zitat Zitat von deadshox Beitrag anzeigen
    Hm und was kann ich noch dagegen tun, ausser magic_quotes_gpc auszumachen? Das mit dem Eintrag bei Faker habe ich ausprobiert und da ist nichts passiert.
    Du sollst es ja gerade nicht ausmachen o.o Das ist in diesem Fall das, weas dich gegen die SQLInjections schützt, da alle Sachen, die von außen kommen, escaped werden. Du musst, um dich zu schützen, eigentlich nur die entry()-Funktion auch auf die Sachen beim Upload anwenden (auch auf den Dateinamen).
    Ich würde die entry() Funktion auf die Sachen beschränken, die zum Sichern für eine Query notwendig sind (eigentlich nur add_slashes()) Gerade strip_tags würde ich mir sparen, da es ja unter Umständen zum Beispiel Benutzernamen gibt, die wie ein Tag aussehen - die wären dann nicht erlaubt.

    Zitat Zitat von deadshox Beitrag anzeigen
    Naja nu dann wuerde es so aussehen:
    PHP-Code:
    show_template("style/fake_main"
    Ist doch fast das gleiche.
    Aber auch nur fast. eval() ist eine unsaubere Sache, die sollte man am besten nur an einer Stelle verwenden (mal davon abgesehen, dass es viel kürzer wäre :P)

    Zitat Zitat von deadshox Beitrag anzeigen
    Wie meinste das?
    Naja , es ist über ein include gemacht. Besser wäre es imo, die Sprache nur als Einstellungswert zu definieren, und dann in der index.php oder sonstwo die entsprechende Sprache einzubauen - das ist benutzerfreundlicher und flexibler (zB unabhängig vom Sprachpfad )

    PS: Der neue Code ist schon viel übersichtlicher

  10. #30
    Zitat Zitat von Manni Beitrag anzeigen
    Du sollst es ja gerade nicht ausmachen o.o Das ist in diesem Fall das, weas dich gegen die SQLInjections schützt, da alle Sachen, die von außen kommen, escaped werden. Du musst, um dich zu schützen, eigentlich nur die entry()-Funktion auch auf die Sachen beim Upload anwenden (auch auf den Dateinamen).
    Ich würde die entry() Funktion auf die Sachen beschränken, die zum Sichern für eine Query notwendig sind (eigentlich nur add_slashes()) Gerade strip_tags würde ich mir sparen, da es ja unter Umständen zum Beispiel Benutzernamen gibt, die wie ein Tag aussehen - die wären dann nicht erlaubt.
    Ok Sry da hab ich mich falsch ausgedrueckt mit den Magic Quotes. ^^ Meine natuerlich ausser es an zulassen.


    Zitat Zitat von Manni Beitrag anzeigen
    Aber auch nur fast. eval() ist eine unsaubere Sache, die sollte man am besten nur an einer Stelle verwenden (mal davon abgesehen, dass es viel kürzer wäre :P)
    Hab das grad Probiert eval() in eine Funktion zu packen hat aber nicht Funktioniert. ;(


    Zitat Zitat von Manni Beitrag anzeigen
    Naja , es ist über ein include gemacht. Besser wäre es imo, die Sprache nur als Einstellungswert zu definieren, und dann in der index.php oder sonstwo die entsprechende Sprache einzubauen - das ist benutzerfreundlicher und flexibler (zB unabhängig vom Sprachpfad )
    Was meinst du mit Einstellungswert? Ueber einen Admin Panel?

    Zitat Zitat von Manni Beitrag anzeigen
    PS: Der neue Code ist schon viel übersichtlicher
    Danke.

  11. #31
    Zitat Zitat von deadshox Beitrag anzeigen
    Hab das grad Probiert eval() in eine Funktion zu packen hat aber nicht Funktioniert. ;(
    Änder doch einfach deine dooutput() Funktion (ungetestet):
    PHP-Code:
    function dooutput($template){
        eval(
    'echo "'.$template.'";');

    Du könntest das ganze auch direkt in die gettemplate() Funktion packen:
    Änder doch einfach deine dooutput() Funktion (ungetestet):
    PHP-Code:
    function gettemplate($template,$endung="xhtml"){
        
    $template str_replace('"''\\"'implode('',file($template.'.'.$endung)));

            return eval(
    'return "'.$template.'";');

    In beiden Fällen bekommst du allerdings Probleme mit den variablen, weil sie innerhalb der Funktion nicht vorhanden sind (außer den Superglobalen). Da empfielt es sich, einfach alle Variablen für das Template mitzuübergeben (als Array) und dann extract() zu verwenden

    Zitat Zitat von deadshox Beitrag anzeigen
    Was meinst du mit Einstellungswert? Ueber einen Admin Panel?
    Ein Wert in deiner Konfigurationsdatei. Und wenn du ein Admin Panel hast, dann sollte man das da natürlich auch ändern können

  12. #32
    Warum zum Teufel benutzt du überhaupt eval(), um statischen Code auszuführen?


    Was Magic Quotes angeht: Stell' sie ab. Und zwar bei dir lokal (sofern du auf einem eigenen Rechner einen Testserver laufen hast). Man sollte Webanwendungen immer so entwickeln, als wolle man sie hinterher auf einem maximal unsicheren System laufen lassen - weil sie nämlich vielleicht irgendwann auf genau so einem laufen. Wenn du dich dann auf Magic Quotes und Safemode verläßt kann es sein, daß es eine böse Überraschung gibt.

    Abgesehen davon stellen Magic Quotes u.U. unschöne Dinge mit den Daten an, wenn man nicht aufpaßt. Es hat seine Gründe, warum sie bei PHP seit Ewigkeiten standardmäßig deaktiviert sind.

  13. #33
    Zitat Zitat von Manni Beitrag anzeigen
    In beiden Fällen bekommst du allerdings Probleme mit den variablen, weil sie innerhalb der Funktion nicht vorhanden sind (außer den Superglobalen). Da empfielt es sich, einfach alle Variablen für das Template mitzuübergeben (als Array) und dann extract() zu verwenden
    Naja also kann ich es auch gleich sein lassen da es ja noch Komplizierter wird.

    Zitat Zitat von Manni Beitrag anzeigen
    Ein Wert in deiner Konfigurationsdatei. Und wenn du ein Admin Panel hast, dann sollte man das da natürlich auch ändern können
    In meiner Konfigurationsdatei brauch ich auch bloß german, mit sagen wa mal english austauschen aber ich werd das ganze Sprach System noch einmal ueberarbeiten. ;]

    Zitat Zitat von Jesus_666 Beitrag anzeigen
    Warum zum Teufel benutzt du überhaupt eval(), um statischen Code auszuführen?
    Was soll ich sonst nutzen? War halt die einfachste Variante fuer ein Template System.

  14. #34
    Ist auch reichlich unsicher. Mit eval() kann man theoretisch unbegrenzten Schaden anrichten... Diese Funktion gilt im Allgemeinen als extrem unsauber und sollte nach Möglichkeit vermieden werden.


    Ich mache Templates für gewöhnlich so:
    1. Das Template selbst
    Genau wie bei dir einfach eine Datei mit Platzhaltern. Die haben bei mir ein anderes Format (üblicherweise %PLATZHALTER% oder {PLATZHALTER}), ansonsten ist es aber gleich. Das andere Format rate ich dir, damit du hinterher nicht groß escapen mußt. Alternativ kannst du auch einfach den zu ersetzenden Text in '' statt "" verpacken; damit werden Variablennamen nicht geparst (siehe unten).

    2. Der Code
    In PHP lade ich den Inhalt der Templatedatei in eine Variable und füge da per str_replace() meinen Kram ein.

    Ein simples Beispiel:
    template.htm
    Code:
    <h1>%ÜBERSCHRIFT%</h1>
    <p>Heute ist der %DATUM%.</p>
    <p>Noch ein Wert: $replace["me"].</b>
    template.php
    Code:
    <?php
      $template = file_get_contents('template.htm');
      $template = str_replace('%ÜBERSCHRIFT%', 'Beispiel', $template);
      $template = str_replace('%DATUM', date('d.m.Y'), $template);
    
      // Das funktioniert nicht, weil PHP den Variablennamen auflöst:
      $template = str_replace("$replace[\"me\"]", 'Hurra', $template);
    
      // Das funktioniert.
      $template = str_replace('$replace["me"]', 'Hurra', $template);
    
      echo $template;
    ?>

    Ach ja, du kannst den Kram natürlich auch automatisieren:
    Code:
    // Mal an deinem Setup-Template orientiert
    foreach ($lang as $key => $value)
    {
      $template = str_replace('$lang["'.$key.'"]', $lang[$value], $template);
    }

    Geändert von Jesus_666 (18.06.2007 um 21:15 Uhr)

  15. #35
    Zitat Zitat von Jesus_666 Beitrag anzeigen
    Ach ja, du kannst den Kram natürlich auch automatisieren:
    Code:
    // Mal an deinem Setup-Template orientiert
    foreach ($lang as $key => $value)
    {
      $template = str_replace('$lang["'.$key.'"]', $lang[$value], $template);
    }
    Allerdings könnte man dann auch gleich zwei Arrays verwenden und die eingebaute Array-Unterstützung von str_replace() nutzen. Ich kann mir gut vorstellen, dass das weitaus performanter ist:
    PHP-Code:
    $search = array('{{TITLE}}''{{NAME}}');
    $replace = array('Meine Homepage''drunken monkey');

    $template str_replace($search$replace$template); 
    Hab's allerdings jetzt nicht ausprobiert.
    Nachteil wäre vielleicht, dass das eine Array mit Schlüssel->Wert-Paaren übersichtlicher ist. Allerdings könnte man wahrscheinlich auch ohne große Performanceeinbußen das Array wie bei dir anlegen und dann automatisch in zwei Arrays aufteilen lassen.

  16. #36
    Hm irgendwie sagen mir eure Varianten nicht zu. ;(
    Ich sehe meine immer noch fuer am besten an da sie am einfachsten ist.

    @Jesus_666 bitte nen mir doch mal ein paar bsp. was man alles mit eval() boeses machen kann, sonst sehe ich keinen Sin drin es nicht mehr zu verwenden!

    Edit: Hab mal das Tutorial rausgesucht wo durch ich das so mache mit dem Template und da steht auch drin das das vBulletin das genauso macht. ;P

    Tutorial zum Template System.

    Geändert von deadshox (19.06.2007 um 08:50 Uhr)

  17. #37
    Zitat Zitat von deadshox Beitrag anzeigen
    [I]Edit: Hab mal das Tutorial rausgesucht wo durch ich das so mache mit dem Template und da steht auch drin das das vBulletin das genauso macht. ;P
    Es steht nicht "genauso", sondern "nach dem gleichen Prinzip", was ein erheblicher Unterschied macht. In dem Kontext heißt's ziemlich sicher, dass vBulletin auch Templates verwendet, und nicht eval().
    Ich kann mir's zwar im Gegensatz zu anderen hier nicht ansehen, aber mich würde es sehr stark wundern, wenn eine große Forensoftware wie vB auf sowas wie eval() setzen würde. o_O'

  18. #38
    Ich habe keinen direkten Exploit zur Hand, rate aber trotzdem von eval() ab. Ein Escapefehler mit str_replace() und der User kriegt uninterpretierten PHP-Code geliefert. Ein Escapefehler mit eval() und der Server führt Code des Angreifers aus. (Ja, man sollte immmer davon ausgehen, daß die Anwendung permanent angegriffen wird; alles andere ist Leichtsinn.)


    Nebenbei generierst du durch falsche Syntax links und rechts kaputte Konstanten. $lang[faker] ist nicht gleichbedeutend mit $lang['faker']!


    BTW, es ist möglich, fast beliebiges JavaScript zu injizieren. Die Eingaben für Faker und Gefakten werden nicht ausreichend gefiltert, um Skripte abzufangen. Momentan kriege ich nichts besseres als window.location = "http://evil.tld/" hin, aber über die Lücke wären potentiell fiese Angriffe möglich und ein besser mit JavaScript bewandter Angreifer könnte u.U. sogar XSS durchführen.


    Zitat Zitat
    Edit: Hab mal das Tutorial rausgesucht wo durch ich das so mache mit dem Template und da steht auch drin das das vBulletin das genauso macht. ;P
    Du weißt, daß das vBulletin eine ganze Weile lang unter Code-Injektionen zu leiden hatte? Derartige Angriffe funktionieren grundsätzlich nicht, wenn du eval() nicht verwendest (oder Dämlichkeiten machst wie hochgeldene Dateien zu includen).

  19. #39
    Zitat Zitat von drunken monkey Beitrag anzeigen
    Es steht nicht "genauso", sondern "nach dem gleichen Prinzip", was ein erheblicher Unterschied macht. In dem Kontext heißt's ziemlich sicher, dass vBulletin auch Templates verwendet, und nicht eval().
    Ich kann mir's zwar im Gegensatz zu anderen hier nicht ansehen, aber mich würde es sehr stark wundern, wenn eine große Forensoftware wie vB auf sowas wie eval() setzen würde. o_O'
    vB Benutzt auch eval() aber nach meinem Wissen nicht für die Tamplates, die werden um einiges anders verarbeitet wenn ich mich recht entsinne. Denn ich hab bisher noch nix gesehen im vB wo Template und eval() zusammen genutzt werden.

    zu Templates selber kann cih nur sagen das ich meine Templates wie vB in einer Datenbank speichere und diese dann wenn benütigt auslese.
    Der rest geht dann wie bei Jeez über die Platzhalter die dann per str_replace() ersetzt werden. Find ich persönlich praktisch und auch sehr unkompliziert

  20. #40
    Hm ich habe mir gerade ein paar OpenSource CMSs angeschaut und festgestellt wenn ueberhaupt ein Template System genutzt wird wo PHP und HTML nicht gemischt sind dann geht es irgendwie ueber OOP.
    Also Lern ich jetzt erst mal OOP, wollte das schon lange mal machen und dann kann ich gleich das ganze Projekt so umstellen.

    Danke Trotzdem schon mal fuer eure Hilfe!

    So lange ich OOP Lern steht dieses Projekt hier erst mal still.

Berechtigungen

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