php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.11.2009, 16:23  
Benutzer
 
Registriert seit: 04.07.2009
Beiträge: 67
PHP-Kenntnisse:
Anfänger
haemoglobin befindet sich auf einem aufstrebenden Ast
Standard [Ajax-Sicherheit] habe ich etwas vergessen, oder genügt das?

Hallo,

aus reinem interesse würde ich gerne wissen ob ich etwas vergessen habe, was zur Sicherheit beim Einsatz von Ajax beiträgt. Von folgenden Dingen habe ich schon gelesen:
  • Die Validierung der Usereingaben findet nicht Clientseitig, sondern Serverseitig statt - sollte meiner Meinung nach selbstverständlich sein. Bevorzugt durch eine Whitelist.
  • Eventuell vorhandene Sonderzeichen müssen vor dem senden an den Browser escaped werden. Bei PHP z.B. mit htmlspecialchars().
    |
    └→ ich meine mal gelesen zu haben das hmtlspecialchars() teilweise nicht genug ist, kann mich aber nicht erinnern wo genau. Suchen hat bisher auch nicht gebracht. Hat da vielleicht jemand von euch einen Link?

  • Wenn man JSON nutzt, soll man einen JSON-Parser anstelle von eval() nutzen, da sonst Javascript Injections ermöglicht werden. Desweiteren soll es hilfreich sein einen JSON String in Javascript-Kommentaren einzuschließen.
  • Außerdem soll man zufällig erzeugte Tokens verwenden, damit der Server weiß, dass der Request von der eigenen Seite kommt.
haemoglobin ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.11.2009, 00:01  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Clientseitig kann schon stattfinden, macht sogar Sinn, darf halt nur nicht die einzige Prüfung sein. Das entstehende Problem ist, dass du dann Code doppelt prüfst, entsprechend die Logik verteilst. Das kann dann schon zum Problem werden.
Chriz ist offline   Mit Zitat antworten
Alt 03.11.2009, 12:32  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.167
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Außerdem soll man zufällig erzeugte Tokens verwenden, damit der Server weiß, dass der Request von der eigenen Seite kommt.
Das ist... naja - Kann man sich eigentlich sparen. Das kann man auch mit einer Session machen.. Tokens können Probleme bringen, wenn Du mehrere Requests machst.
Zitat:
Wenn man JSON nutzt, soll man einen JSON-Parser anstelle von eval() nutzen, da sonst Javascript Injections ermöglicht werden.
Wenn Du schon htmlspecialchars benutzt, brauchst Du das auch nicht.

Ein Tipp: Benutz für Ajax Frameworks wie jQuery, die nehmen einem unheimlich viel Handarbeit ab.

Zitat:
das hmtlspecialchars() teilweise nicht genug ist
Davon habe ich noch nichts gehört. Was wichtig ist, dass Du als 2. PArameter ENT_QUOTES (Auch " und nicht nur ' escapen) und als 3. Parameter das verwendete charset benutzt.
xm22 ist offline   Mit Zitat antworten
Alt 03.11.2009, 21:22  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Zitat:
Zitat von xm22 Beitrag anzeigen
Das ist... naja - Kann man sich eigentlich sparen. Das kann man auch mit einer Session machen.. Tokens können Probleme bringen, wenn Du mehrere Requests machst.
Diese Tokens können schon sinnvoll sein wenn du CSRF verhinden möchtest. Und das ist eine Sache die wirklich häufig ausgenutzt wird....

Zitat:
Wenn Du schon htmlspecialchars benutzt, brauchst Du das auch nicht.
Jein. Dabei geht es um völlig verschiedene Dinge. Wenn du einen JSON-String per eval() parst wird auch jeder andere Müll der da drin steht geparst....
__________________
Today you...Tomorrow me.
agrajag ist offline   Mit Zitat antworten
Alt 04.11.2009, 07:37  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.167
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Was für Müll?
xm22 ist offline   Mit Zitat antworten
Alt 04.11.2009, 08:36  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Zum Beispiel ein alert() oder jeder andere JS-Code...
__________________
Today you...Tomorrow me.
agrajag ist offline   Mit Zitat antworten
Alt 04.11.2009, 12:10  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.167
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Wenn Du json "evalst", wird kein Code, der sich irgendwo darin befindet, ausgeführt. Dann könnte man das ja gar nicht mehr benutzen, oder traut sich einer zu, einen String komplett nach möglichen JS-Elementen zu durchsuchen?

Geändert von xm22 (04.11.2009 um 12:13 Uhr).
xm22 ist offline   Mit Zitat antworten
Alt 04.11.2009, 14:29  
Benutzer
 
Registriert seit: 04.07.2009
Beiträge: 67
PHP-Kenntnisse:
Anfänger
haemoglobin befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von xm22 Beitrag anzeigen
Ein Tipp: Benutz für Ajax Frameworks wie jQuery, die nehmen einem unheimlich viel Handarbeit ab.

Davon habe ich noch nichts gehört.
Sollte ich Ajax mal einsetzen werde ich es wohl mit jQuery machen. Für Javascript ohne Serveranfragen nutze ich es ohnehin schon.

Ich finde den Link zu diesem Blogbeitrag leider nicht mehr. Es kann natürlich auch sein das ich es mit einer anderen Funktion verwechsel, ich bin mir allerdings ziemlich sicher das es htmlspecialchars() war. Aber wenn der Einsatz von htmlspeciachlars() teilweise nicht genug wäre, hätte sich hier wohl schon jemand gemeldet der da ebenfalls von gelesen/gehört hat.
Zitat:
Zitat von xm22 Beitrag anzeigen
Wenn Du json "evalst", wird kein Code, der sich irgendwo darin befindet, ausgeführt. Dann könnte man das ja gar nicht mehr benutzen, oder traut sich einer zu, einen String komplett nach möglichen JS-Elementen zu durchsuchen?
Zitat:
Zitat von json.org
If the server is not rigorous in its JSON encoding, or if it does not scrupulously validate all of its inputs, then it could deliver invalid JSON text that could be carrying dangerous script. The eval function would execute the script, unleashing its malice.
Falls ich dich nicht falsch verstehe.
haemoglobin ist offline   Mit Zitat antworten
Alt 04.11.2009, 14:43  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.167
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Ah - Ich verstehe, was Du meinst. Natürlich musst Du dafür sorgen, dass korrektes json zurück kommt. Wenn man statt json einfach alert(document.cookie) zurück liefert, dann ist das natürlich fatal. Allerdings bleibt dann trotzdem die Problematik, dass man _nie_ händisch auf alle Angriffsversuche reagieren kann. htmlspecialchars sorgt natürlich _nur_ für die Maskierung von Zeichen..
xm22 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mysql root passwort vergessen Datenbanken 1 29.05.2005 11:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ajax sicherheit, json sicherheit, jquery htmlspecialchars, php ajax sicherheit, jquery json parse, jquery ajax sicherheit, ajax sicherheitsaspekte, ajax php sicher, ajax request sicherheit, parsejson jquery sonderzeichen, sicherheit json, ajax json sicherheit, could not parse json (), jquery json decode, spruch etwas vergessen, jquery json parser, htmlspecialchars benutzen, ajax sicherheit server, jquery json ajax parse, sicherheit bei ajax

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:51 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum