如何在 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 数据包自动阻止网络监听。
要解决此问题并重新提交以进行渗透测试,请对 main.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;
并在 main() 方法中添加这一行:
HttpOverrides.global = MyHttpOverrides();
【讨论】:
以上是关于如何在 Flutter 上禁用 SSL 固定?的主要内容,如果未能解决你的问题,请参考以下文章
只有在 Flutter 应用程序上使用 Web 时,如何才能禁用某些功能?