Hab derzeit einen PHP Styleswitcher, allerdings stört mich das aktuallisieren der Seite, beim ändern des Stylesheets.
Soll ich lieber auf JS zugreifen - oder lieber bei PHP bleiben? Hab nur Sorgen wegen der Deaktivierungsmöglichkeit von JS - allerdings machen das doch nur sehr wenig oder?
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! -
Wo soll den XSS Gefahr sein?
-
naja,
JS:
jetzt leite ich den nutzer per tynieurl zuerst auf meine seite, wo ein ajaxrequest nach
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.
-
Du weißt schon, dass der Style-Change bei jedem User einzeln gewechselt wird und nicht einer für alle?
-
Ja das weiss ich.
Nochmal:
Wir haben folgende Dateien:PHP
Alles anzeigen#index.php <?php session_start(); // Mach was $style= (empty($_SESSION['style'])) ? "standard.css" : $_SESSION['style']; ?> <html> <head> <link href="<?php echo $style; ?>" rel="stylesheet" type="text/css" id="style"> </head> <body> <H1>HELLO WORLD</H1> </body> </html>
Code
Alles anzeigen// changestyle.js function changeStyle(newstyle) { styles=array(); styles['normal']="standard.css"; styles['green']="green.css"; if (styles[newstyle]) { $.ajax("changestyle.php?style="+styles[newstyle], { sucess: function(data) { document.getElementById("style").href=styles[newstyle]; } }); } else document.getElementById("style").href=styles['normal']; }
So, ich bin jetzt ein hacker und habe auf meinem server folgende datei
HTML
Alles anzeigen#nicoRSS.html <html> <head> <script> $.ajax('http://www.nicosurl.de/changestyle.php?style=standard.css"><script>alert("BOOOM! XSS");</script><link href="standard.css', { complete: function() { location.href="http://www.nicosurl.de/"; } }); </script> </head> </html>
und dann auf meiner seite schreibe
wird beim click der Session-Cookie für http://www.nicosurl.de esetzt, in seiner session steht dannDann wird durch das location.href seine Seite geladen, wo wiederrum der PHP Code greift und aus dem
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.
-
papperlapapp, schwuler scheiss!
http://de3.php.net/manual/de/function.strip-tags.phpmeine 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. -
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...
-
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. -
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. -
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