我需要安全地准备一个使用用户输入的字符串。我正在使用一个名为 sql_conn 的 flutter 包与 SQL 数据库进行通信。这是一个临时解决方案,直到我们构建一个 Web 服务器来接收所有呼叫为止。
这是如何发送 SQL 请求的示例:
var connectionAllowedResult = await SqlConn.readData("declare @Allowed bit declare @Status nvarchar(4000) exec spHandheldConnectionAllowed '$username', '$ipAddress', '$dbName', @Allowed output, @Status output");
我如何安全地准备这个,以便用户不能恶意插入自己的 SQL 语句?
直接在前端应用程序中编写与 SQL 相关的函数并不是一个好主意,我更喜欢使用单独的后端服务(如 Django 或 Flask)来处理后端查询,然后在 flutter 中使用 HTTP API 调用。
pub.dev 上的验证链包可能会帮助你。有很多使用自定义函数来提供验证的很好的例子。
在用户输入字段时、sql 语句之前进行输入验证。另一个建议是使用不允许不当输入的类型。不要将 IP 地址存储为字符串,而是将其存储为 4 个 int 的列表等。