使用撇号将数据安全插入 SQLite 数据库

发布于 2024-10-28 19:10:13 字数 380 浏览 2 评论 0原文

我正在尝试根据用户提供的文本在 SQLite 数据库中创建一个表。一切工作正常,除了当我尝试在文本中添加撇号(这将是新的表名称)时。经过研究,我确定我所做的不是最佳实践,因为很容易受到注入:

    const char *sqlStr = [[NSString stringWithFormat:@"CREATE Table '%@' ('Name' 'char(50)','ID' 'integer')",theString]UTF8String];

因此我试图找到一种方法,允许撇号包含在表名称中并将值安全地插入数据库中。我已阅读有关绑定值的内容,但这可以通过“CREATE TABLE”语句实现吗?或者仅当您将数据插入到已经存在的表中时?

感谢您的帮助。

I am trying to create a table in a SQLite database based on user provided text. Everything was working correctly, except when I tried to add an apostrophe inside the text (which was to be the new table name). After research, I determined that what I was doing is not the best practice as is vulnerable to injection:

    const char *sqlStr = [[NSString stringWithFormat:@"CREATE Table '%@' ('Name' 'char(50)','ID' 'integer')",theString]UTF8String];

So I am trying to find a way to allow apostrophes to be included in the table name and safely inserting the value into the database. I have read about binding values, but is this possible with the 'CREATE TABLE' statement? Or only when you insert data into an already existing table?

Thanks for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半边脸i 2024-11-04 19:10:13

来自文档

字符串常量是通过将字符串括在单引号 (') 中形成的。字符串中的单引号可以通过将两个单引号放在一行中进行编码 - 就像 Pascal 中一样。

因此:

[theString stringByReplacingOccurrencesOfString:@"'" withString:@"''"];

From the documentation:

A string constant is formed by enclosing the string in single quotes ('). A single quote within the string can be encoded by putting two single quotes in a row - as in Pascal.

Thus:

[theString stringByReplacingOccurrencesOfString:@"'" withString:@"''"];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文