XSS kann unter Umständen zum Kapern von Sessions (Stichwort document.cookie) oder Umleiten von Benutzereingaben führen. Zwar bestünden die Sicherheitslücken in der serverseitigen Programmierung, aber das Einschleusen von JavaScript-Code wäre das Mittel, sie auszunutzen. Cross-Site Scripting ist neben SQL Injections die hauptsächliche Angriffsmethode auf Webseiten.
Sobald die Logindaten serverseitig abgeglichen werden, spielt die Clienttechnologie für viele Sicherheitsaspakte keine Rolle mehr. Ein Login sollte immer serverseitig durchgeführt werden.
Ich kann mir denken, was du meinst (Zugangsdaten im JavaScript gespeichert, also im HTML-Code einsehbar), aber das ist nicht unbedingt das, was ich spontan unter JavaScript-Login verstehen würde. Mein Verständnis ginge eher in Richtung AJAX.
Ich zB verwende JS nur wenn ich meinen Usern dazu ne Alternative anbieten kann. Wenn ich nen styleswitcher in JS mache, ist das natürlich schöner, da die Seite da nicht reloadet. Aber wenns einer deaktiviert hat, kann ich ihm ne alternative in PHP anbieten.
Das ist der empfehlenswerte Ansatz. JavaScript sollte, wo es Sinn ergibt, immer unterstützend eingesetzt werden, also durch das reine HTML-Gerüst gegebene Funktionalität ausbauen. Ein Beispiel dafür wäre auch die ausklappbare Seitenspalte hier im Forum. Standardmäßig könnte die Spalte beim Laden der Seite eingeblendet werden und nur dann (per JavaScript) beim Rendern der HTML-Seite um die entsprechenden GUI-Elemente („Anfasser“ zum Aus-/Einklappen) und Funktionen erweitert werden, wenn JavaScript aktiviert ist.
Das Wesentliche wurde in #7 genannt.
Es handelt sich um grundsätzlich verschiedene Anwendungsbereiche. Ich denke, für eine klärende Diskussion muss man dabei eine klassische Rollenverteilung zwischen Server und Client (zum Beispiel Browser) voraussetzen. Die lässt sich zwar in modernen Clients zunehmend aufweichen (AJAX, RIAs, Websockets, Cookies, allgemein persistente Datenhaltung beim Client, …), aber das macht das Thema wahrscheinlich zu unübersichtlich.
Allgemein:
Server („Logik“/„Auswertung“)
- persistente Sicherung von Daten (zum Beispiel Benutzereingaben, Seiteninhalte)
- Generierung von HTML-Dokumenten und sonstigen vom Client nachgefragten Datenpaketen
Client („Darstellung“)
- geeignete Darstellung vom Server kommender Daten (zum Beispiel dynamisch nach Spalten sortierbare Tabellen ohne Nachladen von Daten)
- Generierung neuer oder modifizierter Daten, Absenden dieser Daten an den Server zur persistenten Sicherung
PS: Ich bin mir nicht sicher, ob der letzte Abschnitt jetzt so besonders hilfreich ist… Die Abgrenzung von Kompetenzen ist schwieriger in Worte zu fassen, als ich anfangs dachte.