Ustaw plik cookie na HttpOnly za pomocą JavaScript

87

Mam plik cookie, który NIE jest. HttpOnlyCzy mogę ustawić ten plik cookie HttpOnlyza pomocą JavaScript?

Eric Hotinger
źródło
1
Jak byłoby możliwe ustawienie pliku cookie przez JavaScript, którym JavaScript nie powinien być w stanie manipulować? Po prostu ustaw go po stronie serwera.
BalusC
1
Plik cookie NIE jest HttpOnly i chcę ustawić go na HttpOnly za pomocą JavaScript.
5
Myślę, że pomijasz sens HttpOnly.
BalusC
Świetne pytanie. Naprawdę nie ma żadnych wad ustawiania pliku cookie HttpOnly od klienta, jeśli chodzi o bezpieczeństwo. Więc można by pomyśleć, że byłoby to dozwolone. Ale oczywiście tak nie jest.
PHP Guru

Odpowiedzi:

171

Plik HttpOnlycookie oznacza, że nie jest dostępny dla języków skryptowych, takich jak JavaScript. Tak więc w JavaScript absolutnie nie ma dostępnego API do pobierania / ustawiania HttpOnlyatrybutu pliku cookie, ponieważ w przeciwnym razie podważyłoby to znaczenie HttpOnly.

Po prostu ustaw go jako taki po stronie serwera, używając dowolnego języka po stronie serwera, którego używa strona serwera. Jeśli JavaScript jest do tego absolutnie niezbędny, możesz rozważyć po prostu pozwolić mu wysłać jakieś żądanie (AJAX) z np. Określonym parametrem żądania, który uruchamia język po stronie serwera, aby utworzyć plik cookie HttpOnly. Ale to nadal ułatwiłoby hakerom zmianę HttpOnlysamego pliku przez XSS i nadal miałby dostęp do pliku cookie przez JS, a tym samym uczyniłby HttpOnlyplik cookie całkowicie bezużytecznym.

BalusC
źródło
4
Zastanawiam się, jak aplikacja po stronie klienta, taka jak rozszerzenie przeglądarki „EditThisCookie”, mogłaby zmienić flagę HttpOnly na false.
pavanw3b
1
@ PavanW3b: Nie używa do tego języka skryptowego po stronie klienta, takiego jak JavaScript. To tylko rozszerzenie przeglądarki.
BalusC
10
@BalusC Rozszerzenia przeglądarki są napisane w JS i od jakiegoś czasu developer.chrome.com/extensions „Piszesz je przy użyciu technologii internetowych, takich jak HTML, JavaScript i CSS”. developer.mozilla.org/en-US/Add-ons/WebExtensions/ ... „Zostały napisane przy użyciu standardowych technologii internetowych - JavaScript, HTML i CSS - oraz kilku dedykowanych interfejsów API JavaScript.” I przykład otwartego kodu napisanego w 2013 r. github.com/Asana/Chrome-Extension-Example
Justin Hamade
53
Naprawdę nie rozumiem, w jaki sposób ustawienie HttpOnly z JS może "pokonać znaczenie HttpOnly", o ile plik cookie jest nadal nieczytelny ze skryptu ...
witam,
4
MDN twierdzi, że to zabronione. developer.mozilla.org/en-US/docs/Web/HTTP/ ...
mpoisot