首页 > 解决方案 > 在 dart 中转义字符串中的单引号和双引号

问题描述

我正在用颤振创建一个基本的聊天应用程序。它涉及一个文本字段,用户可以在其中输入任何文本并单击发送按钮。

该应用程序适用于您在文本框中输入的任何字符串,但包含引号的字符串除外。尝试将该字符串添加到 sql 数据库时出现数据库异常,因为引号未转义。

对字符串执行replaceAll("'", "\'").replaceAll('"', "\'")操作就像我在 sql 查询中使用双引号一样,但现在所有双引号都是单引号。

谢谢您的帮助。

标签: stringdartflutter

解决方案


数据库是否支持绑定参数?如果没有,您用来与数据库通信的包是否具有字符串转义功能?

这些会比手动操作更好,特别是因为用户输入中除了引号之外可能存在非常不安全的内容。如果您手动将查询字符串组合在一起并将其发送到数据库,它将容易受到 SQL 攻击。

对于您的直接问题,您将在两个地方都用单引号替换。假设您可以通过以斜线作为前缀来转义引号,它应该看起来像.replaceAll('"', '\\"').

寻找一种更安全的方式来清理用户输入。


推荐阅读