首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用SqlKata时防止sql注入?

如何在使用SqlKata时防止sql注入?
EN

Stack Overflow用户
提问于 2019-11-21 16:27:33
回答 2查看 1.3K关注 0票数 1

我遇到了一些不安全的SqlKata函数:

示例

代码语言:javascript
复制
public class TestRepository
{
    private readonly QueryFactory _queryFactory;

    public TestRepository(QueryFactory queryFactory)
    {
        _queryFactory = queryFactory;
    }

    public IList<TestResult> TestFunction(string value)
    {
        var query = _queryFactory.Query("MyTableName");
        query.Where("MyColumnName", value);
        return query.Get<TestResult>();
    }
}

和输出:

代码语言:javascript
复制
--> output --> sqlkata query log
--> select * from MyTableName where MyColumnName = 'Select Id from Users where Nickname = ''Admin'''

我必须使用SqlKata和asp.net内核。我需要一个解决方案。

EN

回答 2

Stack Overflow用户

发布于 2019-11-21 16:37:41

避免SQL注入的最安全的方法是使用参数化查询。

正如this link中的SQLkata文档所说的那样,它确实主要使用参数来构建执行的this link。在同一链接中,有一些函数不使用参数。

因为有更多的安全函数,而不是不安全的函数,所以我在文档中复制粘贴are documented to use参数的函数名称:

  • WhereFalse

  • WhereNull
  • WhereTrue

顺便说一句,如果您正在使用具有分析器的数据库,则可以监视数据库中实际执行的SQL,并检查是否使用了参数。这在使用封闭源代码组件时非常有用。例如,在SQL Server中,您有SQL Server Profiler和SQL Server监视器(集成在SQL Server Management Studio中)

票数 2
EN

Stack Overflow用户

发布于 2019-11-22 03:46:10

默认情况下,SqlKata是安全的,如果您遵循建议,它可以保护您免受SQL注入。

a.使用原生方法构建@bradbury9建议的查询

代码语言:javascript
复制
var name = "unsafe string value here";
query.Where("Name", name);

b.使用Raw方法时,请确保使用参数占位符

代码语言:javascript
复制
var name = "unsafe string value here";
query.WhereRaw("[Name] = ?", name);

c.最重要的一点是避免使用SqlResult.ToString()来执行查询。

提供的示例是完全安全的,因为SqlKata使用了参数绑定技术,在这里,记录器通过用占位符替换实际值来做一些额外的工作,以显示最终结果。

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

https://stackoverflow.com/questions/58970365

复制
相关文章

相似问题

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