通过flutter应用直接连接MySQL

问题描述

有人可以向我解释为什么你不能从安全角度直接通过 dart 连接到 MysqL 数据库吗?

解决方法

对于是否将前端直接连接到后端没有硬性指南。这只是多年来被广泛接受和发展的设计实践。

典型的应用程序结构包括 前端 -> 一些中间层 -> 后端

中间层处理与数据库的所有交互/处理,前端使用此功能和某种 API 结构。当应用程序扩展时,拥有这一层非常有用,它为前端提供了额外的抽象。

不建议直接将您的前端(您的 Flutter 应用程序)融合到 DB(MySQL),因为任何高效的黑客都可能使用基本的中间人攻击来了解您的 DB 结构/连接/查询(有一些非常有效的反编译器),并更改您的数据,除非您对 DB 层应用了一些检查,否则您甚至可能不知道是什么原因导致数据更新。

此外,您的前端逻辑需要更多地以最终用户为中心,而不是处理用户的数据。任何后端系统(java、node 等)都为您提供了额外的功能和自由来解析和呈现来自任一端的数据。

您可以使用可用于存储基本数据的 sqlite 包,例如您的会话令牌、您的应用程序配置等,但建议将主要用户数据(例如登录名等)保存在单独的位置,或者更好的是,您可以使用firebase插件将数据以文档结构存储在云端。