首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Vapor 4中的用户搜索术语防止SQL注入(Fluent 4)

如何用Vapor 4中的用户搜索术语防止SQL注入(Fluent 4)
EN

Stack Overflow用户
提问于 2020-08-28 12:50:16
回答 1查看 405关注 0票数 2

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

代码语言:javascript
复制
.filter(Machine.path(for: \Machine.$name), .contains(inverse: false, .anywhere), term)

其中term是用户提供的任意String。代码本身按照预期工作,但我想知道是否存在SQL注入漏洞(或其他攻击)的可能性。

我的问题:

是可能的SQL注入(或其他攻击),如果是,我如何防止它(请提供一个代码示例)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-01 13:19:26

由于您使用的是Fluent,SQL注入是自动防止的,您是好的!

而不是像这样简单地构造一个查询:

代码语言:javascript
复制
SELECT * FROM machines WHERE name = '\(user_provided_name)'

Fluent使用值绑定,这是数据库提供的将值传递到查询中的特性,以便将值转义,如果字符串包含SQL代码,则不会执行值绑定。看起来是这样的:

代码语言:javascript
复制
SELECT * FROM machines WHERE name = ?

然后,通过查询将值传递给数据库服务器(在本例中为MySQL),在该查询中,它将使用所提供的值自动替换占位符(?)。

如果您需要,可以对您的查询进行快速评论,您可以导入FluentSQL模块,然后按如下方式编写查询:

代码语言:javascript
复制
.filter(\.$name ~~ term)

如果你想保持现在的样子,那也没关系。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63634126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档