gpt4 book ai didi

swift - 如何在 Vapor 4 (Fluent 4) 中使用 User-Search-Terms 防止 SQL 注入(inject)

转载 作者:行者123 更新时间:2023-12-04 08:59:13 25 4
gpt4 key购买 nike

我目前正在实现一个 Vapor 4 应用程序,它将用于管理机器。
用户应该能够搜索 对于机器名称,我通过

.filter(Machine.path(for: \Machine.$name), .contains(inverse: false, .anywhere), term)
在哪里 term是任意的 String由用户提供。
代码本身按预期工作,但我想知道是否存在 SQL 注入(inject)漏洞(或其他攻击)的可能性。
我的问题:
SQL注入(inject)(或其他攻击)是否可能,如果是,我该如何防止它(请提供代码示例)?

最佳答案

由于您使用的是 Fluent,因此会自动阻止 SQL 注入(inject),一切顺利!
而不是简单地构造这样的查询:

SELECT * FROM machines WHERE name = '\(user_provided_name)'
Fluent 使用值绑定(bind),这是数据库提供的一种功能,用于将值传递到查询中,这样如果字符串包含 SQL 代码,值就会被转义并且不会被执行。它看起来像这样:
SELECT * FROM machines WHERE name = ?
然后将这些值与查询一起传递给数据库服务器(在本例中为 MySQL),在那里它会自动将占位符 ( ? ) 替换为提供的值。
快速评论您的查询,如果需要,可以导入 FluentSQL模块,然后像这样编写您的查询:
.filter(\.$name ~~ term)
如果你宁愿让它保持现在的样子,那也没关系。

关于swift - 如何在 Vapor 4 (Fluent 4) 中使用 User-Search-Terms 防止 SQL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63634126/

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