无论你连接的是什么,入口只有一种。
你自己运行的数据库、你拖入的文件、你自己服务器上的一个小脚本。它们都是同一张表中的条目,都以同样的方式注册,而添加一种新类型只是加一个条目,而不是加一个新界面。
你今天能连接什么
两种形态,加一个文件
直接连接数据库
PostgreSQL、MySQL 或 MongoDB。主机、端口、数据库、用户、密码,TLS 默认开启。只读——dash-b 做的任何事都无法写入你的生产数据。
你自己服务器上的连接器
一个你上传到数据库旁边的 PHP 文件。dash-b 得到一个地址和一个签名密钥,仅此而已:没有主机、没有用户名、没有密码。它是唯一能写入的来源,而这正是原因所在。
一个文件
把电子表格或 CSV 拖到看板上,它就变成一个真正的表,列名从文件中读取,而不是由你去猜。无需注册、无需凭据、无需任何设置。
密码会怎样
密钥永远不会回显给你
凭据一旦存储,存储它的表单就无法再把它渲染出来。这不是一个设置——它是与用已存值填充表单的那段代码分开的另一段代码,刻意保持分离,这样“显示已存值”就不会离把数据库密码写进一个可被截屏、共享屏幕或从 DOM 中读出的页面只差一个开关。
连接器的存在,就是为了让你的最强密钥永远不离开你自己的服务器。
你的数据库凭据留在那台本来就有它们的机器的配置文件里。dash-b 只持有一个地址和一个签名,而这两样都不会把你的数据库向任何其他人敞开。
登录其他服务
为什么这里没有登录框
连接一个账号——而不是数据库——意味着使用提供商自己的登录页面,在一个独立的窗口中,并由一个持有应用密钥的中介来保管,dash-b 永远不会持有它,也永远看不到你的密码。
这不是在页面内完成的,而且这不是偏好。Google 和 Facebook 都拒绝被嵌入框架,这是刻意的:显示在别人文档里的登录表单与钓鱼页面无法区分,而做一个这样的东西只会交付一个空白矩形。
目录是为它们而建的,机制也已就位;但连接本身尚未开放,所以设计器不会给你一个在你选好之后才失败的按钮。等它们开放时,会以与上面所有内容相同的表条目形式到来。
被测试钉住的两件事
不允许退步的检查
- 任何密钥都不会被回显。一个测试向每个提供商的每个字段放入一个标记,然后在渲染出的页面中搜索它。
- 登录应答只有在各项细节全部核验通过时才会被采信——它的来源、格式、必须携带的一次性值和时效——所有这些都在读取其中任何一个字段之前验证完毕。同一时刻只有一个登录流程在途,因此旧登录不会被后续消息应答。
两者存在,是因为它们防止的失败悄无声息:前者会把密码泄露进截图,后者会让一个链接把别人的账号连到你的账号上。
连接上只是一半。
磁贴可以读取你连接的数据源。有了连接器,磁贴还能写入——看板上的一个按钮,就能往你自己的数据库里添加一行。