Ciasteczka w JavaScript, cz. 2
Komentarze dla notki “Ciasteczka w JavaScript, cz. 2”
-
BTM - 28 grudnia 2008, 18:11:56
Widzę, że zainspirowałem, ale z mistrzem JS to nie mam co zaczynać ;]
-
Rafael - 28 grudnia 2008, 18:15:14
@BTM: faktycznie, po przeczytaniu notki na Twoim blogu postanowiłem w końcu napisać artykuł dotyczący mojego skryptu. Nie mogłem pozwolić, żeby skrypt umarł nie będąc nigdzie opublikowanym ;-)
-
Michał Górny - 28 grudnia 2008, 20:21:48
To jeszcze dodać należy, że w XHTML-u ‘document.cookie’ nie istnieje, a każda sensowna przeglądarka powinna prędzej czy później dorobić się możliwości blokady tej funkcjonalności, domyślnie nastawionej na ‘on’.
-
Rafael - 28 grudnia 2008, 21:02:05
@Michał Górny: Mógłbyś bardziej rozwinąć? Chyba nie wszystko zrozumiałem.
document.cookie istnieje jako własność obiektu HTMLDocument w dokumentacji DOM Level 2 HTML Dokumentacja ta dotyczy zarówno dokumentów HTMLowych (4.01) jak i dokumentów XHTML 1.0
This specification defines the Document Object Model [...] of HTML 4.01 and XHTML 1.0 documents
Czyli dla XHTML 1.0 Twoje stwierdzenie uważam za nieprawdziwe. Wiem, XHTML 1.0 jest kompatybilny wstecz. Pozostaje tylko kwestia XHTML 1.1, dlatego proszę o Twój komentarz w tej sprawie.
W każdym bądź razie nie spodziewam się wyrzucenia funkcjonalności ciasteczek z implementacji JS, mimo, że dostajemy powoli wraz z „HTML5” mechanizm Storage i inne, które mogą tylko częściowo zastąpić mechanizm ciasteczek.
a każda sensowna przeglądarka powinna prędzej czy później dorobić się możliwości blokady tej funkcjonalności, domyślnie nastawionej na ‘on’.
Też nie za bardzo rozumiem. Ciasteczka można spokojnie wyłączyć już dzisiaj w przeglądarce. Chyba, że masz na myśli kompletne usunięcie własności cookie z dokumentu?!
-
Michał Górny - 28 grudnia 2008, 21:05:01
Rafael: Nie chodzi mi o wyłączenie ciasteczek, a jedynie dostępu do nich z JS. Wiąże się ono bowiem z poważnymi zagrożeniami, jeśli chodzi o bezpieczeństwo — i w wielu miejscach bez większego problemu można „wykraść” cudze ciastka.
-
Rafael - 28 grudnia 2008, 21:11:31
To fakt, że JS stanowi – na źle zabezpieczonych stronach – zagrożenie, ale dlatego proponuje się programistom przeglądarek wprowadzenie obsługi parametru HttpOnly, który webmasterzy mogliby ustawiać dla poufnych ciasteczek, który spowoduje, że ciasteczka z tą flagą nie będą widoczne z poziomu skryptów wykonywanych przez przeglądarkę. IE ma to od jakiegoś czasu.
W każdym bądź razie, dopóki nie możemy opierać się na innym mechanizmie przechowywania danych przez skrypty JS, ciasteczka będą nadal miały „wzięcie”. -
BTM - 28 grudnia 2008, 21:27:25
Nie widzę co prawda żadnego powiązania pomiędzy wersją XHTML a obsługą ciasteczek przez document.cookie – przecież to leży w gestii JS/DOM jak zaznaczył Rafael, a ta jest raczej niezależna od standardu dokumentu?
-
Rafael - 28 grudnia 2008, 21:46:26
@BTM: tak, ale sama część dokumentacji DOM jest już zależna od typu dokumentu. Jak cytowałem DOM Level 2 HTML zdefiniowany jest dla dokumentów HTML i XHTML 1.0. Ale jak Michał Górny napisał, głównie rozchodzi się tu o zabezpieczanie dostępu do ciasteczek. Od jakiegoś roku natknąłem się na sporą ilość dyskusji na temat ciasteczek (linków nie jestem w stanie podać), propozycji zmiany tego mechanizmu, żeby stał się mniej podatny na „ataki”/wykradanie ciastek. Niektóre propozycje – o ile dla mnie były absurdalne – cieszyły się jako takim zainteresowaniem wśród deweloperów, bo były relatywnie proste do wdrożenia i nie ingerowały w znacznym stopniu w dzisiejszy „porządek” (aktualne założenia).
-
Bartosz "BTM" Szczec - 28 grudnia 2008, 21:49:06
No tak, ale całkowite uniemożliwienie odczytu ciasteczek przez JS jest moim zdaniem rozwiązaniem błędnym. Szczególnie, jeżeli jedynym „za” jest uniknięcie ataków bazujacych na kradzieży ciastek
-
Wasacz - 30 grudnia 2008, 11:41:22
A ten tego, wie ktoś, kiedy mniej więcej Opera dostanie local/globalStorage?
-
Rafael - 03 stycznia 2009, 12:09:30
Niestety, na to pytanie nie jestem w stanie odpowiedzieć. O ile lubię obserwować rozwój przeglądarek to w przypadku Opery jestem trochę zniechęcony, bo cała wiedza na temat tej przeglądarki pochodzi ze szczątkowych informacji zespołu programistycznego i wydań tygodniowych. W ten sposób za bardzo nie znamy przyszłości tylko stan aktualny.
-
Karol - 07 marca 2009, 23:06:47
(Komentarz zmodyfikowany 15.03.2009 o 18:45)
Mam dwa pytania:
co robi srednik na samym poczatku? czy to jakis hack na konkretna przegladarke?
skad decyzja zeby uzyc eval do tworzenia obiektu? nie lepiejvar t={}; (document.cookie+’;’).replace(/([\w%]+)=?([^;]*);/g,function (m,a,b) {t[a]=b}); -
Rafael - 15 marca 2009, 16:45:31
co robi srednik na samym poczatku? czy to jakis hack na konkretna przegladarke?
Nie, ten średnik nie jest żadnym hackiem na przeglądarki. W zasadzie piszę go z przyzwyczajenia. Daję go dla pewności, że interpreter uzna tę funkcję anonimową, wraz z otaczającymi ją nawiasami za początek nowej instrukcji a nie część wcześniej zadeklarowanej zmiennej czy funkcji. Taka abstrakcyjna sytuacja, ale możliwa, gdy zdarza nam się nie wstawiać średników na końcu instrukcji, tak jak czasami mi się zdarza.
Co do użycia eval, to po prostu w momencie pisania artykułu nie wpadło mi do głowy, żeby w ten sposób użyć replace ;-P Dzięki za zwrócenie uwagi, odnotuję to w powyższym skrypcie.
Przepraszam, że tyle czekałeś na odpowiedź, ale info o nowym komentarzu nie dotarło do mnie na jabbera.


Subskrybuj