一尘不染

用dart转义字符串中的单引号和双引号

flutter

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

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

replaceAll("'", "\'").replaceAll('"', "\'")因为我在sql查询中使用双引号,所以在字符串上执行操作,但是现在所有双引号都是单引号。

谢谢您的帮助。


阅读 2030

收藏
2020-08-13

共1个答案

一尘不染

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

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

对于您的直接问题,在两个地方都用单引号代替。假设您可以通过在其前面加上一个斜杠来对引号进行转义.replaceAll('"', '\\"')

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

2020-08-13