Як читати файли cookie HttpOnly за допомогою JavaScript


90

Чи є спосіб прочитати захищений файл cookie за допомогою JavaScript?
Я намагався зробити це за допомогою, document.cookieі, наскільки я бачу в цій статті про захищені файли cookie та прапор HttpOnly , я не можу отримати доступ до захищеного файлу cookie таким чином.

Хтось може запропонувати обхідний шлях?


1
З wiki : Захищений файл cookie використовується лише тоді, коли браузер відвідує сервер через HTTPS.
Павло Ходек

6
@Pavel Hodek Це неправильний прапор. Прапорець "безпечного" файлу cookie не має нічого спільного з прапором безпеки HTTPOnly. У них жахлива система імен.
грак

1
Заголовок цих питань слід змінити, щоб включити прапор "HttpOnly". На даний момент схоже, що питання стосується прапора "Безпека".
Том

Відповіді:


125

Різні браузери вмикають різні заходи безпеки, коли встановлено прапор HTTPOnly . Наприклад, Opera та Safari не заважають javascript записувати до файлів cookie. Однак читати завжди заборонено в останній версії всіх основних браузерів.

Але що важливіше, чому ви хочете прочитати HTTPOnlycookie? Якщо ви розробник, просто вимкніть прапор і переконайтеся, що ви протестували свій код на xss. Рекомендую уникати відключення цього прапора, якщо це можливо. HTTPOnlyПрапор і «безпечний прапор» (який змушує кук для відправки через HTTPS) завжди повинні бути встановлені.

Якщо ви зловмисник , то хочете викрасти сеанс . Але є простий спосіб захопити сесію, незважаючи на HTTPOnlyпрапор. Ви все ще можете їздити на сесії, не знаючи ідентифікатора сесії. Черв'як MySpace Samy зробив саме це. Він використовував XHR для зчитування маркера CSRF, а потім виконував уповноважене завдання. Тому зловмисник міг робити майже все, що міг зробити зареєстрований користувач.

Люди занадто вірять у HTTPOnlyпрапор, XSS все ще може бути використаний. Слід встановити бар’єри навколо чутливих функцій. Такі, як подана зміна пароля, вимагатиме поточного пароля. Можливість адміністратора створити новий обліковий запис повинна вимагати капчу, яка є методом запобігання CSRF, який неможливо легко обійти за допомогою XHR .


Не могли б ви детальніше розповісти про хробака? Це посилання не працює, і насправді мало що зрозуміло з Інтернету. Дякую.
Абхішек Джебарадж

@Abhishek Jebaraj Якщо ви не розумієте хробака саммі або жетони CSRF, спробуйте спочатку зрозуміти межі політики того самого походження
грак

я хочу отримати термін дії файлу cookie лише з http, як це зробити
PirateApp

50

Вся суть файлів cookie HttpOnly полягає в тому, що вони не можуть отримати доступ до JavaScript.

Єдиний спосіб (крім використання помилок браузера) для вашого сценарію їх прочитати - це мати на сервері співпрацюючий сценарій, який буде читати значення файлу cookie та повторювати його як частину вмісту відповіді. Але якщо ви можете і хочете це зробити, навіщо спочатку використовувати файли cookie HttpOnly?


Можливо, ви захочете протестувати його, щоб дізнатись, чи користувач браузером правильно обробляє HttpOnly для файлів cookie, перш ніж дозволити користувачеві використовувати ваш сайт із певного браузера. Я шукаю приклад, який може забезпечити підтримку браузером прапора HttpOnly. Держава
член

Я виявив, що вони консультують версію браузера в білому списку. Можливо, я помиляюся, але чи не буде це зручним способом перевірити підтримку з javascript? Чи можете ви запропонувати якісь недоліки щодо цього?
Урсегор

-7

Одним із способів є використання веб-інспектора сафарі, і на вкладці зберігання ви можете побачити всі файли cookie, httpOnly чи ні, і просто вибрати файл cookie Command + C, щоб скопіювати його.

Отримавши рядок, ви можете легко проаналізувати його назад за допомогою будь-якого синтаксичного аналізатора файлів cookie або простого javascript.

введіть тут опис зображення


1
FF та Chrome також можуть це зробити. Вони не те саме, що хоче ОП.
imba-tjd

@ imba-tjd Ну ти маєш рацію, але на той момент я користувався Safari, тому міг просто поручитися за це.
pankajdoharey

Це подібно до того, як ви відповідаєте комусь, хто запитує: "Як отримати користувацький ввід", запитуючи: "Просто запитайте їх, а потім встановіть у своєму коді".
форумулятор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.