Перейти к содержанию

Хранение значений Cookies в стандартной базе WebView

Критичность: ВЫСОКИЙ
Способ обнаружения: DAST, SENSITIVE INFO

Описание

При использовании WebView со стандартными настройками (или неправильно сконфигурированного), все значения Cookie, которыми оперирует WebView будут сохранены в директорию приложения в специальной базе Cookie.db. При этом значения в данной базе никак не шифруются и доступны в открытом виде.

Несмотря на то, что данный файл находится во внутренней директории приложения, хранить сессионные идентификаторы и другие чувствительные данные, относящиеся к процессу аутентификации в открытом виде не рекомендуется. Получить данный файл можно несколькими способами, начиная от backup приложения, до эксплуатации других уязвимостей, позволяющих читать произвольные файлы в директории приложения.

Рекомендации

Для предотвращения хранения значений Cookie необходимо правильно настраивать WebView при создании. Если до этого значения были сохранены их необходимо удалить.

Необходимо иметь ввиду, что на разных версиях Android SDK эта операция совершается по-разному. Ниже представлен пример кода, который реализует корректное очищение Cookie для всех версий Android:

webView.clearCache(true);
    webView.clearHistory();
    WebSettings webSettings = webView.getSettings();
    webSettings.setSaveFormData(false);

    // Not needed for API level 18 or greater (deprecated)
    webSettings.setSavePassword(false); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
        CookieManager.getInstance().removeAllCookies(null);
        CookieManager.getInstance().flush();
    } else {
        CookieSyncManager cookieSyncMngr = CookieSyncManager.createInstance(this);
        cookieSyncMngr.startSync();
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.removeAllCookie();
        cookieManager.removeSessionCookie();
        cookieSyncMngr.stopSync();
        cookieSyncMngr.sync();
    }

Ссылки

  1. https://developer.android.com/reference/android/webkit/CookieManager#removeAllCookies(android.webkit.ValueCallback)

  2. https://www.owasp.org/index.php/Mobile_Top_10_2016-M2-Insecure_Data_Storage

К началу