mysql - 将移动数据 (SQLite) 与服务器数据 (Mysql) 水平同步(按行)
问题描述
我正在构建一个移动应用程序,我希望保存数据应该在多个设备上仅供登录用户使用。
例如,如果用户登录到移动应用程序,只有他的记录(数据)应该被同步(离线可用)可能使用用户唯一 ID。
出于安全原因,我不希望表行中的所有记录都同步,因为其他用户记录也会在那里。
我已经阅读了有关在 sqlite-sync 中使用过滤器的信息,但我没有看到任何可以阻止用户操作过滤器并同步其他用户记录的东西。
仅以安全方式(使用经过身份验证的用户 ID)同步用户记录的最佳方法是什么?
解决方案
为您的订阅者 ID 使用难以猜测的随机文本字符串。Base64 编码的CHAR(10)
字符串可以携带 50 位随机性。这很难猜。
当用户进行身份验证(登录)时,将subscriberId 传递给您的移动应用程序。
当您创建一个新的用户帐户时,使用一个高质量的随机数生成器让她成为一个新的subscriberId。
不允许通过用户序列号从您的移动应用程序中查找数据,而只能通过subscriberId。
如果您的服务器收到对不存在的subscriberId 的请求,则表明有人试图猜测有效值。断开那个人。
推荐阅读
- callback - 为什么回调函数不在这段代码中运行?
- acumatica - Acumatica 帮助文档中的超链接损坏
- mysql - Mysql 文本到数据格式,尤其是 MM:SS
- python - Pandas:计算 0.001 范围内的值,因此在 0 到 0.001 之间计数,然后在 0.001 和 0.002 之间计数,等等
- c# - 在剃刀中更改用户输入
- asp.net-core - 如何从 Startup 类中找到底层操作系统
- c# - 如何为需要用户进行身份验证的 Bot Framework v4 对话框编写单元测试?
- php - 教义部分选择加载整个对象
- html - 为什么包含 img 的 div 不会拉伸他父母的 div 高度
- sql - 为 sap hana 上的表列生成哈希列