Hallo,
Definitiv sollte es HTTP-only sein (Javascript braucht die Session nie für legitime Zwecke wissen, bei Ajax-Requests wird es ja automatisch wieder mitgeschickt)
Das ist auch das Problem von HttpOnly. In dem Fall, wo HttpOnly nützlich ist, nämlich Cross-Site Scripting, hilft es nur bedingt. Es verhindert, dass die Session-ID den Browser verlässt und von einem anderen Rechner aus authentifizierte Requests abgesendet werden. Es hilft nicht dagegen, dass der durch XSS ferngesteuerte Browser authentifizierte Requests absendet, das UI verändert und so den Nutzer täuscht, Logout-Möglichkeiten unschädlich macht usw.
Der Artikel http://www.gnucitizen.org/blog/why-httponly-wont-protect-you/ beschreibt das schön. Ich stimme zwar dem Tenor nicht zu, dass HttpOnly nutzlos sei. Es ist aber korrekt, dass das Auslesen und Versenden des Cookies für den Angreifer weniger ergiebig ist als das direkte Senden von Requests vom kompromittierten Browser aus. Bei Persistent XSS sitzt der Angreifer an der Quelle, er kann Schadcode ausführen, der eine stets aktuelle Session nutzen kann. Der Angreifer hat wenig dadurch gewonnen, wenn er die vergängliche Session-ID zudem versenden kann.
Mathias