Шифровать и дешифровать куки-файлы, хранящиеся в базе данных куки-файлов. - PullRequest
0 голосов
/ 04 ноября 2019

В своем приложении для реагирования на нативные данные я использовал библиотеку fetch для сетевого взаимодействия, также я использовал cookie в своих коммуникациях.

Мой сервер отправляет мне некоторые конфиденциальные данные, и я настроил свой запрос на выборку для хранениякуки-файлы credentials: 'include'

fetch(URL, {
  // other Options
  credentials: 'include',
}).then().catch();

Я проверил свое приложение на рутированном устройстве Android и выяснил, что куки-файлы были сохранены в базе данных с именем Cookies.

. enter image description here

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

enter image description here

Я знаю, что fetch Api использует Okhttp3 в реализации Android, поэтому я попытался изменить клиента по умолчанию, чтобы изменить поведение по умолчанию, переопределив его класс CookieJar и добавив в него некоторую процедуру шифрования и дешифрования.

MainActivity

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    OkHttpClientProvider.setOkHttpClientFactory(new OkHttpClientFactory() {
        @Override
        public OkHttpClient createNewNetworkModuleClient() {
            ReactCookieJarContainer reactCookieJarContainer = new ReactCookieJarContainer();
            reactCookieJarContainer.setCookieJar(new SecureCookieJar());
            return new OkHttpClient.Builder()
                // other configures
                .cookieJar(reactCookieJarContainer)
                .build();
        }
    });
}

SecureCookieJar

public class SecureCookieJar implements CookieJar {

    @Override
    public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
        // securely encrypt and store the cookies
    }

    @Override
    public List<Cookie> loadForRequest(HttpUrl url) {
        // decrypt the stored cookies
    }
}

но когда я отлаживаю свой код, кажется, что мой класс не учитываетпо реакции-нативной и все еще использующей его внутренний класс JavaNetCookieJar (я отладил код и дошел до удара класса)

ReactCookieJarContainer enter image description here

Есть ли способ вообще переопределить поведение по умолчанию, и если да, то как мне этого добиться. идеальный подход - найти способ переопределить JavaNetCookieJar для шифрования и дешифрования куки перед их передачей.

Существует ли аналогичная процедура, необходимая и для IOS? Я не знаю, как IOS управляет файлами cookie в своей собственной реализации.

...