首页 > 编程语言 >保护你的 Flutter 应用程序

保护你的 Flutter 应用程序

时间:2022-10-26 11:55:44浏览次数:80  
标签:return 保护 await 应用程序 flutter SSL Flutter

保护你的 Flutter 应用程序

原文 https://medium.com/flutter-community/securing-your-flutter-applications-77c2bf3ff25e

如果本文对你有帮助,请转发让更多的朋友阅读。

如果您不知道需要更改哪些内容以及这些内容如何影响整个构建,那么保护 Flutter 应用程序可能是一项任务,但在生产应用程序时,这是唯一最重要的事情。

保护 Flutter 应用程序的安全应该是每个开发人员都必须认真对待的事情,因为这直接影响到应用程序的最终用户。他们的数据和通过 Internet 发生在您的应用程序之间的所有通信都可能受到各种攻击,意识到这些风险并采取措施防范这些风险应该是每个开发人员的责任。

Flutter + Security

Flutter + Security = ❤

这里需要注意的一点是,我在本文中提到的所有内容都取决于您的应用程序是否需要它。您必须决定这对您的应用程序是否至关重要。

首先,让我们从一些基本的列表项目开始,然后转向更加技术性的列表项目。

使用受信任的软件包,总体上使用较少的软件包(如果可能的话)

大多数应用程序的功能或 UI 组件将依赖于外部包,确保所使用的包由受信任的开发人员开发、维护良好并被相当多的人使用非常重要。这样做的原因是,在出现问题的情况下,由于使用它的人数较多,所以它被提前发现。Dev 得分和受欢迎程度应该是一个很好的起点。

始终通过 HTTPS 进行通信

如果您的应用程序与外部 API 和服务通信,请确保应用程序与远程服务器之间的通信是通过 HTTPS 进行的,以便数据在传输过程中被加密,并且在传输过程中没有外部黑客可以轻易访问数据。几乎所有在互联网上的东西都已经迁移到使用 HTTPS,所以这真的不应该再是一个选项,而是一种默认的做事方式。

HTTP having insecure connections vs HTTPS having encrypted connections

HTTP vs HTTPS

正确的错误处理和消息传递

有可能抛出异常的函数应该总是放在 try-catch 块中,这样就不会给用户带来不可预见的应用程序崩溃。除此之外,向用户显示有用的错误信息也是一个很好的做法,但是始终不要显示错误的确切细节,因为这些信息可能/可以很容易地用来找到漏洞。

import 'package:flutter/material.dart';

Future<dynamic> functionThatThrowsException() async {
  // some code
  throw Exception('Could not perform operation.');
}

Future<void> testFunction() async {
  try {
    var x = await functionThatThrowsException();
    // do something with x
  } catch (e) {
    debugPrint(e.toString());
  }
}

Try Catch with Flutter

当 Flutter 应用程序生产发布,如果发生错误,灰色屏幕显示给用户,这可以从用户的观点令人沮丧。因此,显示一个有用的错误小部件/屏幕可能是简化用户体验的好方法。

return MaterialApp(
      title: 'Flutter App',
      builder: (context, widget) {
        ErrorWidget.builder = (FlutterErrorDetails errorDetails) {
          return CustomErrorWidget(errorDetails: errorDetails);
        };
        return widget ?? const Scaffold();
      },
    ...
    ...


class CustomErrorWidget extends StatelessWidget {
  final FlutterErrorDetails errorDetails;

  const CustomErrorWidget({
    Key? key,
    required this.errorDetails,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const Card(
      color: Colors.red,
      margin: EdgeInsets.zero,
      child: Padding(
        padding: EdgeInsets.all(8.0),
        child: Text(
          "Something is not right here...",
          style: TextStyle(
            color: Colors.white,
            fontWeight: FontWeight.bold,
          ),
        ),
      ),
    );
  }
}

Displaying a Custom Error Widget

标签:return,保护,await,应用程序,flutter,SSL,Flutter
From: https://www.cnblogs.com/ducafecat/p/16827794.html

相关文章

  • dataguard基本简介及三大保护模式介绍
    一、容灾复制方案1、阵列的复制技术(硬件)磁盘柜和磁盘柜之间远程不支持通过在阵列之间进行复制,异地保存数据对存储设备和网络环境要求比较高。比如EMC存储)2、基于逻......
  • SpringBoot2配置HikariCP连接池的密码保护
    本文讨论如何保护SpringBoot配置文件中的数据库连接信息,一般情况下application.properties里会如下配置DataSource:spring.datasource.driver-class-name=com.mysql.cj.jdbc.......
  • SpringBoot2配置HikariCP连接池的密码保护
    本文讨论如何保护SpringBoot配置文件中的数据库连接信息,一般情况下application.properties里会如下配置DataSource:1spring.datasource.driver-class-name=com.mysql.cj.......
  • Flutter(八):Flutter路由管理(Router)
    目录一、术语路由(route):导航(Navigator):二、路由管理1、Navigator示例代码2、路由定义(命名路由)在App中定义router:3、Navigator方法介绍1.Navigator.push2.Navigor.pop......
  • 构建 Flutter 应用程序的10个最佳 VSCode 插件
    构建Flutter应用程序的10个最佳VSCode插件在本文中,我们将分享使用VisualStudio代码(VSCode)IDE的经验。我们的开发团队更喜欢使用某些插件,这里我们将解释原因......
  • flutter系列之:永远不用担心组件溢出的Wrap
    目录简介Row和Column的困境Wrap组件详解总结简介我们在flutter中使用能够包含多个child的widget的时候,经常会遇到超出边界范围的情况,尤其是在Column和Row的情况下,那么我......
  • Metro风格XAML应用程序性能技巧
    微软发布了一篇名为《Metro风格XAML应用程序性能技巧》的白皮书,其中包含一些关于保持响应、确保流畅动画、改善启动时间、消耗较少资源等方面的建议。我......
  • ASP.NET MVC 4中的单页面应用程序
    ASP.NETMVC4beta中包含了一个实验项目,用作开发“单页面应用程序(singlepageapplications)”。该项目也称为ASP.NETSPA,其项目类型基于一组开源库以.........
  • 【等保2.0笔记】1.什么是等级保护
    为什么要实施等级保护1.国家信息安全形式严峻2.维护国家安全需求(三网合一:互联网、电信网、广电网)及重要信息系统(银行、铁路、电力、海关)3.信息安全是非传统安全为什么要实施......
  • 【转】单页面应用程序优缺点
    图片来自黑马程序员      ......