string - 在 dart 中转义字符串中的单引号和双引号
问题描述
我正在用颤振创建一个基本的聊天应用程序。它涉及一个文本字段,用户可以在其中输入任何文本并单击发送按钮。
该应用程序适用于您在文本框中输入的任何字符串,但包含引号的字符串除外。尝试将该字符串添加到 sql 数据库时出现数据库异常,因为引号未转义。
对字符串执行replaceAll("'", "\'").replaceAll('"', "\'")
操作就像我在 sql 查询中使用双引号一样,但现在所有双引号都是单引号。
谢谢您的帮助。
解决方案
数据库是否支持绑定参数?如果没有,您用来与数据库通信的包是否具有字符串转义功能?
这些会比手动操作更好,特别是因为用户输入中除了引号之外可能存在非常不安全的内容。如果您手动将查询字符串组合在一起并将其发送到数据库,它将容易受到 SQL 攻击。
对于您的直接问题,您将在两个地方都用单引号替换。假设您可以通过以斜线作为前缀来转义引号,它应该看起来像.replaceAll('"', '\\"')
.
请寻找一种更安全的方式来清理用户输入。
推荐阅读
- python - 如何在 Python matplotlib 子图中显示图例
- javascript - 分裂的笑声回应
- c++ - 数组 - 使用用户输入
- google-bigquery - FOR SYSTEM_TIME AS OF 中的 TIMESTAMP 文字不默认为 UTC
- android-management-api - Android Management API 补丁后设备同步策略的最长时间
- r - 整理 ggplot 中的 geom_text() 位置
- sql - 执行 SQL Server 存储过程
- html - 如何在 sass 中使用 WebP
- python - 使用 Gekko 的最优控制问题:“未找到解决方案”
- node.js - 带有 https 的 Socket.io 服务器