在我的本机应用程序中,我使用fetch
库进行网络通信,在通信中也使用了Cookie。
我的服务器向我发送了一些敏感数据,我将获取请求配置为通过credentials: 'include'
来存储cookie
fetch(URL,{
// other Options
credentials: 'include',}).then().catch();
我在有根Android设备上测试了我的应用程序,发现Cookie已存储在名为Cookies
的数据库中。
当我在SQLiteDatabase浏览器中打开数据库时,发现敏感数据不安全地存储在该数据库中。
我知道fetch Api在android实现中使用的是Okhttp3,因此我尝试通过覆盖其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
}
}
但是当我调试代码时,我的类似乎没有被react-native考虑,仍然使用其内部类JavaNetCookieJar
(我调试了代码并受到了打击)
ReactCookieJarContainer
是否有任何方法可以覆盖默认行为,如果可以,我该如何实现。理想的方法是找到一种在传输Cookie之前覆盖JavaNetCookieJar
来加密和解密Cookie的方法。
IOS是否也需要类似的程序?我不知道IOS如何在其本机实现中管理cookie。