保护你的 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

保护你的 Flutter 应用程序相关推荐

  1. 8 个关于提高你 Flutter 移动程序安全性的建议

    8 个关于提高你 Flutter 移动程序安全性的建议 原文 https://shirsh94.medium.com/8-tips-to-secure-your-flutter-mobile-apps ...

  2. 开始使用-编写你的第一个Flutter应用程序

    2019独角兽企业重金招聘Python工程师标准>>> 这是创建您的第一个Flutter应用程序的指南. 如果您熟悉面向对象的代码和基本编程概念(如变量,循环和条件),则可以完成本教 ...

  3. 使用Dotfuscator保护你的Xamarin应用程序

    老实说,发布一个库.桌面应用程序或移动应用程序可能有点吓人.一旦你的软件可以免费提供给世界,你就失去了如何使用它的某种程度的控制权.特别是,开发人员经常担心逆向工程的威胁. 在许多平台和语言中,代码混 ...

  4. 检查 Flutter 应用程序是否在 Web 上运行

    您可以使用基础库中的kIsWeb常量检查您的 Flutter 应用程序是否在 Web 浏览器上运行 import 'package:flutter/material.dart'; import 'pa ...

  5. AndroidStudio创建第一个 Flutter 应用程序

    AndroidStudio创建第一个 Flutter 应用程序: 转到文件->新建flutter项目. 选择Flutter Application并按下一步按钮. 在下一个窗口中,您将看到您的项 ...

  6. 使用这些HTTP标头保护您的Web应用程序

    by Alex Nadalin 通过亚历克斯·纳达林 使用这些HTTP标头保护您的Web应用程序 (Secure your web application with these HTTP header ...

  7. Flutter State生命周期 Flutter Widget生命周期 Flutter 应用程序生命周期

    题记:不到最后时刻,千万别轻言放弃,无论结局成功与否,只要你拼博过,尽力过,一切问心无愧 在 Flutter应用程序中,生命周期涉及两个,一个是 Widget 的生命周期,一个是应用程序的生命周期,本 ...

  8. Acunetix 简介 为什么需要保护您的 Web 应用程序

    为什么需要保护您的 Web 应用程序 网站安全是当今保护企业最容易被忽视的方面,应该是任何组织的优先事项.黑客越来越多地将精力集中在基于 Web 的应用程序上--购物车.表单.登录页面.动态内容等. ...

  9. 逆向工程Flutter应用程序Part 1

    第1章:掉进兔子洞 首先,我将介绍Flutter堆栈的一些背景知识及其工作原理. 您可能已经知道:Flutter是从头开始构建的,具有自己的渲染管道和小部件库,从而使其真正跨平台,并具有一致的设计,无 ...

最新文章

  1. Python3 xml模块的增删改查
  2. ThreadLocal类
  3. Dell服务器Ubuntu 18.04 双显卡(2080ti)搭建深度学习环境(CUDA 10.1/cuDNN 7.6/Tensorflow 1.14).md...
  4. TypeScript class 的静态成员变量
  5. 7-1 装载问题 (10 分)(思路+详解)
  6. jdbc mysql驱动_MySQL JDBC驱动程序如何处理准备好的语句
  7. php session redis db,php session redis 配置
  8. (15)Verilog HDL宏定义:define
  9. 【蓝桥杯嵌入式】【STM32】6_ADC之LCD实时显示电压值
  10. Leecode刷题热题HOT100(6)——Z 字形变换
  11. 前端调用mysql异步_python链家网高并发异步爬虫asyncio+aiohttp+aiomysql异步存入数据...
  12. 银行的起源---》阮一峰,
  13. 物联网技术的基站能耗监控解决方案
  14. Android Studio User Manual
  15. Sequelize多表联合查询案例
  16. 腾讯云发布容器安全白皮书
  17. Java小程序--抓取emai
  18. python 执行linux rm命令_Linux rm命令:删除文件
  19. android回环地址,Android WebRTC完整入门教程02: 本地回环
  20. 亚马逊AWS使用计费问题

热门文章

  1. Ubuntu下U盘变成只读解决方法
  2. BLOB与CLOB的区别
  3. webshell 一句话木马
  4. .Net Core 集成 RabbitMQ 订阅与发送
  5. 应用架构COLA 2.0
  6. MVC5_Identity登录原理 - Claims-based认证和OWIN
  7. 数据模型|组成要素、概念模型、逻辑模型
  8. 报错:The server time zone value ‘�й���׼ʱ��‘ is unrecognied
  9. 面对区块链,普通人应该做什么?
  10. mysql的英文文献_mysql数据库英文文献.doc