gpt4 book ai didi

ios - 使用 SQLite.swift 查询更正变量绑定(bind)并避免 SQL 注入(inject)

转载 作者:可可西里 更新时间:2023-11-01 01:36:29 26 4
gpt4 key购买 nike

SQLite.swift documentation for filtered queries给出这个例子:

users.filter(email.like("%@mac.com"))
// SELECT * FROM "users" WHERE ("email" LIKE '%@mac.com')

由于我想根据用户输入搜索数据库,我想我可以执行以下操作:

let stringPrefix = userInput + "%"
users.filter(email.like(stringPrefix))
// SELECT * FROM "users" WHERE ("email" LIKE 'johndoe%')

我的做法是否正确?在过去的其他 SQLite 环境中,我使用了 variable binding使用 ? 来避免 SQL injection .这是用 SQLite.swift 在幕后完成的吗?除了 Executing Arbitrary SQL 中关于绑定(bind)的一点信息外,我没有在文档中看到任何信息。部分。

最佳答案

取自this源文件:

@warn_unused_result public func like(pattern: String, escape character: Character? = nil) -> Expression<Bool> {
guard let character = character else {
return "LIKE".infix(self, pattern)
}
return Expression("(\(template) LIKE ? ESCAPE ?)", bindings + [pattern, String(character)])
}

这只是 like 函数的重载之一。另一个重载看起来非常相似,并且确实也使用了参数绑定(bind)。自己去源码里逛一逛,自己验证一下。

但是,我希望您进行内部测试以验证 SQLite 注入(inject)是不可能的。

关于ios - 使用 SQLite.swift 查询更正变量绑定(bind)并避免 SQL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36928418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com