MTK Android12系统中的Strict Secure Cookie Policy问题
创始人
2024-11-16 04:40:56
0

背景

在Android 12系统中,应用程序在设置Cookie时可能会遇到如下错误:

E chromium: [ERROR:cookie_manager.cc(129)] Strict Secure Cookie policy does not allow setting a secure cookie for http://xxx.yuming.com/ for apps targeting >= R. Please either use the 'https:' scheme for this URL or omit the 'Secure' directive in the cookie value. 
为什么Android 12会遇到这个问题?

Android 12引入了更加严格的Secure Cookie Policy,以提高应用和用户数据的安全性。具体来说,当应用目标版本为Android 11(API Level 30)及以上时,系统会强制执行以下政策:

1.只能在HTTPS连接上设置Secure属性的Cookie。
2.试图在HTTP连接上设置Secure属性的Cookie会导致错误。

防止在不安全的HTTP连接上传输敏感信息,从而减少中间人攻击的风险。

参考:行为变更:以 Android 12 为目标平台的应用

为什么不在系统代码中修改CookieManager

修改系统源码框架中的CookieManager类并不是解决此问题的有效方法,原因如下:

  1. CookieManager是一个抽象类,没有具体实现,无法直接修改

    /**  * Manages the cookies used by an application's {@link WebView} instances.  * 

    * CookieManager represents cookies as strings in the same format as the * HTTP {@code Cookie} and {@code Set-Cookie} header fields (defined in * RFC6265bis). */ public abstract class CookieManager {

  2. RoboCookieManager类的修改无效
    虽然可以定位到RoboCookieManager类的文件,但系统不使用这个类,所以修改无效。

目前没有其他更好的办法,只有通过修改StringBuilder类替换字符。如果有更好的方法,请联系留言。

解决方案概述

通过修改系统的Cookie管理组件,强制将特定的HTTP URL转换为HTTPS,并强制设置这些URL的Cookie为Secure,以满足严格的Secure Cookie Policy。

方式1:设置iptables规则进行HTTP到HTTPS的重定向

  1. 查看iptables命令帮助:

    iptables -h 
  2. 设置iptables规则进行HTTP到HTTPS的重定向:

    iptables -t nat -A OUTPUT -p tcp --dport 80 -d xxx.yuming.com -j DNAT --to-destination 127.0.0.1:443 
  3. 验证规则是否生效:

    iptables -L -t nat 

方式2:修改StringBuilder

直接修改Java核心类并不是推荐的方法,但在某些特定场景下需要排查问题,这种方法可以快速有效地解决问题。可以在StringBuilder类的toString方法中增加URL检查和转换逻辑(仅用于测试排查问题,不建议这么改)。

修改步骤
  1. 找到并打开StringBuilder类的源代码文件:该文件通常位于Java核心库的源码中。以下是文件路径和内容的差异:
    diff --git a/libcore/ojluni/src/main/java/java/lang/StringBuilder.java b/libcore/ojluni/src/main/java/java/lang/StringBuilder.java index 325c9c5..b5acc7a 100644 --- a/libcore/ojluni/src/main/java/java/lang/StringBuilder.java +++ b/libcore/ojluni/src/main/java/java/lang/StringBuilder.java @@ -402,6 +402,43 @@ public final class StringBuilder         return this;     }  +@Override +public String toString() { +    // BEGIN Android-added: Return a constant "" for an empty buffer to keep historic behavior. +    if (count == 0) { +        return ""; +    } +    // END Android-added: Return a constant "" for an empty buffer to keep historic behavior. +    // Create a copy, don't share the array +    String result = new String(value, 0, count); +     +    // 检查并转换URL +    if (result.contains("yuming")) { +        if (result.startsWith("http://xxx.yuming.com")) { +            if (result.length() == "http://xxx.yuming.com".length()) { +                result = "https://xxx.yuming.com"; +            } else if (result.length() == "http://xxx.yuming.com/".length()) { +                result = "https://xxx.yuming.com/"; +            } else { +                result = "https://xxx.yuming.com" + result.substring("http://xxx.yuming.com".length()); +            } +        } else if (result.startsWith("http://xxxgw.yuming.com")) { +            if (result.length() == "http://xxxgw.yuming.com".length()) { +                result = "https://xxxgw.yuming.com"; +            } else if (result.length() == "http://xxxgw.yuming.com/".length()) { +                result = "https://xxxgw.yuming.com/"; +            } else { +                result = "https://xxxgw.yuming.com" + result.substring("http://xxxgw.yuming.com".length()); +            } +        } else if (result.startsWith("http://")) { +            result = "https://" + result.substring("http://".length()); +        } +    } + +    return result; +} 

具体修改内容
StringBuilder类的toString方法中增加对特定URL的检查和转换逻辑,确保所有包含yuming的HTTP URL都会转换为HTTPS。

总结

通过上述2种方法,可以解决Android 12系统中Strict Secure Cookie Policy的问题:

  1. 设置iptables规则:通过设置iptables规则进行HTTP到HTTPS的重定向。
  2. 直接修改核心类:在StringBuilder类中增加URL检查和转换逻辑。

虽然直接修改Java核心类可以解决问题,但这种方法存在较大风险,不推荐使用。建议优先考虑修改系统配置或联系应用工程师去解决这个问题,

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...