Styleswitcher in PHP oder JS?

  • Das sind wenige ja...

    Aber mach doch beides, bei aktivierten JS eben über JS bei deaktivierten über PHP


    mfg

  • Naja, ist zwar benutzerfreundlich, mir aber persönlich zu viel arbeit. Mein PHP Styleswitcher arbeitet mit Session. Jetzt kann ich jede Seite als .php abspeichern, jedesmal wenn ich was ändern möchte und die neuen files hochlade werden die Umlaute nicht angezeigt, sobald ich das php script kopiere und am Server druch das alte ersetze funzt es aufeinmal. Das heißt es is n irrer Aufwand, wenn ich was ändern möchte - vorallem weil meine HP aus gut 30 Seiten besteht und noch gut 10 dazukommen :/
    Ich würd mich gern nur auf JS beschränken, zumindest was die Schirftgröße ändern angeht. Da es ja scheinbar doch nur wenig sind, die JS deaktivieren werd ich wohl auch JS einsetzen.

  • Ich würde mal sagen, du solltest dich darum kümmern, warum du Probleme mit den PHP-Files hast und dich nicht darum kümmern, wie du dieses Problem umschiffen kannst.

  • Wie du meinst aber ob du nun zb ein Ajax hast was styleswitcher.php lädt im Hintergrund oder bei nicht Js eben die styleswitcher.php per Request geladen wird ist kein großer Mehraufwand


    mfg

  • Denk ich auch nicht - einfach per php in das style-tag das aktuelle stylesheet rein und beim wechsel per JS ajax (siehe hier) anfrage an ne php die die session neu setzt.
    P.S.: Dabei: ACHTUNG XSS GEFAHR!

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • naja,

    PHP
    #changestyle.php
    session_start();
    $_SESSION['style']=$_GET['style'];
    PHP
    <?php
    #index.php
    ?>
    <link href="<?php echo $_SESSION['style']; ?>" rel="stylesheet" ... >

    JS:

    Code
    $.ajax("changestyle.php?style=abc.ss", { ... });

    jetzt leite ich den nutzer per tynieurl zuerst auf meine seite, wo ein ajaxrequest nach

    Code
    changestyle.php?style=abc.css"><script>alert("BOOOOM! XSS!");</script><link href="xyz.css

    ausgeführt wird.
    Dann kommt ein location.href= und er wird auf Nico´s seite weitergeleitet.
    Und dann steht im HTML:

    HTML
    <link href="abc.css">
    <script>alert("BOOOOM! XSS!");</script>
    <link href="xyz.css" rel="stylesheet" ... >

    Und das funktioniert ja. Aber die gefahr kannste durch ne einfache switch()-case anweisung unterbinden.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Du weißt schon, dass der Style-Change bei jedem User einzeln gewechselt wird und nicht einer für alle?

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Ja das weiss ich.
    Nochmal:
    Wir haben folgende Dateien:

    PHP
    #changestyle.php
    <?php
    session_start();
    $_SESSION['style']=$_GET['style'];
    ?>

    So, ich bin jetzt ein hacker und habe auf meinem server folgende datei

    und dann auf meiner seite schreibe

    HTML
    <a href="http://meineurl.net/nicoRSS.html">FREE RINGTONES</a>


    wird beim click der Session-Cookie für http://www.nicosurl.de esetzt, in seiner session steht dann

    Code
    standard.css"><script>alert("BOOOM! XSS");</script><link href="standard.css

    Dann wird durch das location.href seine Seite geladen, wo wiederrum der PHP Code greift und aus dem

    HTML
    <link href="<?php echo $style; ?>" rel="stylesheet" type="text/css" id="style">
    HTML
    <link href="standard.css"><script>alert("BOOOM! XSS");</script><link href="standard.css" rel="stylesheet" type="text/css" id="style">

    macht, und das ist garnicht gut.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

    Einmal editiert, zuletzt von Tobse (30. August 2010 um 20:01)

  • papperlapapp, schwuler scheiss!
    http://de3.php.net/manual/de/function.strip-tags.php

    meine fresse nee, wenn man input behandelt, als würde er von einem barmherzigen samariter kommen is alles xss oder mysql-injection-gefährdet oder sonstwie offen für hackerfreten!

    wenn gib nich an wo ne evtl xss-gefahr liegt
    (zumal da der hacker auch rausfinden muss, dass nur die url des stylesheets genommen wird und das dann auch erstma testen muss.. also ausgiebig!)

    wenns hier schon tips gibt, dann bitte auch richtig und sicher!!

  • Aber die gefahr kannste durch ne einfache switch()-case anweisung unterbinden.


    Sag ich ja, kann man leicht verhindern. Aber wenn ich XSS auf seiner Seite machen will, dann hab ich die stelle, wo die URL vom Stylesheet herausgenommen wird ganz schnell gefunden. Ist ja auch egal.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

    Einmal editiert, zuletzt von Tobse (30. August 2010 um 22:17)

  • Sag ich ja, kann man leicht verhindern. Aber wenn ich XSS auf seiner Seite machen will, dann hab ich die stelle, wo die URL vom Stylesheet herausgenommen wird ganz schnell gefunden. Ist ja auch egal.


    bullshit! wenns egal wäre würdeste nich so´n bahei drum machen und ausführlichst erklären wo die selbst gebaute lücke is!

  • Tobse: Man kann alle deine Bedenken mit einem einfachen file_exists() oder eine Array mit den erlaubten Styles aus dem Weg räumen...

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Ich hab das nur wegen Pion & Dodo so ausführlich geschrieben. Aber Ich bin mir sicher, dass es nicht zu wenig PHP-Anfänger gibt, die genau diesen fehler machen würden. Ich wollts nur gesagt haben.
    EDIT: Habt ihr das Zitat auch nich gelesen ?

    Aber die gefahr kannste durch ne einfache switch()-case anweisung unterbinden.


    Ich sag ja dass es eigentlich kein Problem ist, aber man wird schon komisch angegukt wenn man anfänger auf anfängerfehler hinweist.
    Und wir sollten uns jetzt NICHT länger damit beschäftigen, ist nämlich OffTopic.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

    2 Mal editiert, zuletzt von Tobse (30. August 2010 um 22:19)

  • Denk ich auch nicht - einfach per php in das style-tag das aktuelle stylesheet rein und beim wechsel per JS ajax (siehe hier) anfrage an ne php die die session neu setzt.
    P.S.: Dabei: ACHTUNG XSS GEFAHR!



    Das is doch noch viel umständlicher!? JS, ajax und php und das nur für einen styleswitcher??
    Ich denk ich werde nun doch PHP verwenden. Mein Seite ladet eh relativ schnell, man merkt das neuladen beim wechseln fast gar nicht, oder empfindet ihr das als störent?

  • Das kann man so pauschal nicht sagen.
    Manche Seiten wirken dadurch zu unruhig - andere nicht.

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Das is doch noch viel umständlicher!?

    Man baut eine Seite für den Nutzer dabei sollte deine eigene Bequemlichkeit nicht im Fordergrund stehen

    Aber ja bau es in PHP und dann einfach in den Link der eben die PHP Datei aufrufen würde ein onclick setze, diese ruft die AJAX funktion auf die dann die PHP datei aufruft

    Wirklich umständlich ist das nicht

    mfg