В своем приложении для реагирования на нативные данные я использовал библиотеку fetch
для сетевого взаимодействия, также я использовал cookie в своих коммуникациях.
Мой сервер отправляет мне некоторые конфиденциальные данные, и я настроил свой запрос на выборку для хранениякуки-файлы credentials: 'include'
fetch(URL, {
// other Options
credentials: 'include',
}).then().catch();
Я проверил свое приложение на рутированном устройстве Android и выяснил, что куки-файлы были сохранены в базе данных с именем Cookies
.
. ![enter image description here](https://i.stack.imgur.com/clYDu.jpg)
когда я открыл базу данных в браузере SQLiteDatabase, я обнаружил, что мои конфиденциальные данные небезопасно хранятся в этой базе данных.
![enter image description here](https://i.stack.imgur.com/sVbSJ.jpg)
Я знаю, что 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](https://i.stack.imgur.com/hae8A.jpg)
Есть ли способ вообще переопределить поведение по умолчанию, и если да, то как мне этого добиться. идеальный подход - найти способ переопределить JavaNetCookieJar
для шифрования и дешифрования куки перед их передачей.
Существует ли аналогичная процедура, необходимая и для IOS? Я не знаю, как IOS управляет файлами cookie в своей собственной реализации.