如何在 Flutter 上禁用 SSL 固定?

Posted

技术标签:

【中文标题】如何在 Flutter 上禁用 SSL 固定?【英文标题】:How to disable SSL Pinning on Flutter? 【发布时间】:2021-12-21 22:33:11 【问题描述】:

我们正在使用 Flutter 进行应用开发。我们的安全测试人员说我们需要在 Flutter 代码中禁用 SSL Pinning,以便他们可以运行一些测试。我们做不到。我们使用 Dio 包进行 HTTP 请求。我们如何在 Flutter 上禁用 SSL Pinning?

【问题讨论】:

【参考方案1】:

编辑:

SSL 固定不是默认行为。因此,如果尚未启用,则无需禁用它。

【讨论】:

我猜这些代码是为了检查是否有 SSL Pinning 和设置证书。但我们不需要做这些。我们需要在 Flutter 应用程序中禁用 SSL Pinning。 抱歉,我没抓住重点。正如这里提到的,SSL Pinning 不是默认行为。因此,如果尚未启用它,则无需禁用它。 reddit.com/r/flutterhelp/comments/q2qsnk/comment/hfn0qdq medium.com/surfstudio/ssl-pinning-in-flutter-apps-254e01e57965 如果您将答案编辑为“SSL 固定不是默认行为。因此,如果尚未启用,则无需禁用它。”然后我可以将您的答案标记为已接受的答案。谢谢! 我编辑了答案。祝你好运!【参考方案2】:

我遇到了类似的问题。解决方案非常简单。 http 数据包自动阻止网络监听。

要解决此问题并重新提交以进行渗透测试,请对 ma​​in.dart 文件进行以下更改:

class MyHttpOverrides extends HttpOverrides 
  @override
  HttpClient createHttpClient(SecurityContext context) 
    if (Platform.isandroid) 
      return super.createHttpClient(context)..badCertificateCallback = (X509Certificate cert, String host, int port) => true;
    

    return super.createHttpClient(context)
      ..findProxy = (uri) 
        return "PROXY localhost:8080";
      
      ..badCertificateCallback = (X509Certificate cert, String host, int port) => true;
  

并在 ma​​in() 方法中添加这一行:

  HttpOverrides.global = MyHttpOverrides();

【讨论】:

以上是关于如何在 Flutter 上禁用 SSL 固定?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter Web 上禁用 SPA

只有在 Flutter 应用程序上使用 Web 时,如何才能禁用某些功能?

如何在flutter中登录后禁用用户返回

安全扫描扫到服务器的SSL存在隐患,建议禁用SSL,启用TLS,这个在WINDOWS和LINUX上,如何操作?

如何获取 SSL 固定的公钥哈希?

如何在不隐藏正文滚动条的情况下在固定 div 上滚动时禁用正文滚动?