В Chrome 76 была прикрыта (https://www.opennet.ru/opennews/art.shtml?num=51122) лазейка в реализации FileSystem API, позволяющая определить из web-приложения применение режима инкогнито. Начиная с Chrome 76 вместо блокировки доступа к FileSystem API, которая использовалась как признак активности режима инкогнито, браузер перестал ограничивать FileSystem API, но очищал вносимые изменения после сеанса. Как оказалось, новая реализация имеет (https://blog.jse.li/posts/chrome-76-incognito-filesystem-timing/) недостатки, позволяющие как и раньше определять активность режима инкогнито.
Суть проблемы в том, что сеанс с FileSystem API в режиме инкогнито является временным, а данные не сохраняются на диск и держатся в оперативной памяти. Соответственно, измеряя (https://github.com/veggiedefender/chrome-filesystem-timing) время сохранения данных через FileSystem API и возникающие отклонения (при сохранении в ОЗУ фиксируются постоянные характеристики, в то время как при записи на диск задержки меняются) можно достаточно уверенно судить просматривается страница в режиме инкогнито или нет. Недостатком метода является достаточно длительный процесс измерения отклонений, который может занять до нескольких минут (демонстрация (https://jse.li/chrome-filesystem-timing/)).
При этом в Chrome 76 остаётся неисправлена ещё одна проблема (https://mishravikas.com/articles/2019-07/bypassing-anti-inco...), позволяющая судить об активности режима инкогнито на основании оценки устанавливаемых ограничений через API Quota Management (https://developer.chrome.com/apps/offline_storage#managing_q...). Для применяемого в режиме инкогнито временного хранилища устанавливаются иные лимиты, чем при полноценном хранении на диске.
Напомним, что в определении режима инкогнито заинтересованы сайты, работающие по модели предоставления полного доступа по платной подписке (paywall). Для привлечения новой аудитории подобные сайты предоставляют новым пользователями на какое-то время демонстрационный полный доступ, что активно используется для обхода paywall. Самым простым способом получить доступ к платному контенту в таких системах является использование режима инкогнито, при котором сайт считает, что пользователь открыл страницу первый раз. Издателей такое поведение не устраивает, поэтому они последнее время активно использовали связанную с FileSystem API лазейку для блокировки доступа к сайту при активном режиме инкогнито и вывода требования отключить данный режим для продолжения просмотра.
URL: https://blog.jse.li/posts/chrome-76-incognito-filesystem-timing/
Новость: https://www.opennet.ru/opennews/art.shtml?num=51226