首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止WiQL注入

如何防止WiQL注入
EN

Stack Overflow用户
提问于 2020-12-02 00:39:28
回答 2查看 121关注 0票数 0

我已经在互联网上搜索了WiQL注入保护指南,但还没有找到任何东西。这适用于Azure Dev Ops (ADO) (以前称为Visual Studio Team Services (VSTS) API )。

对于这段代码,我应该如何防止WiQL注入?The documentation在这里没有显示任何关于防止注入攻击的内容。这里的建议是什么?只是防止‘字符?

代码语言:javascript
复制
        string projectName = "user supplied input";
        string tenantId= "user supplied input";

        var wiql = new Wiql()
        {
            Query = $@"Select [Id] From WorkItems 
                        Where [System.TeamProject] = '{projectName}' 
                        And [Custom.TenantId] = '{tenantId}'
                        Order By [State] Asc, [Changed Date] Desc"
        };

        // create instance of work item tracking http client
        var adoUri = new Uri($"{VSTS_URL}");
        using (var trackingClient = new WorkItemTrackingHttpClient(adoUri, credentials))
        {
            // execute the query to get the list of work items in the results
            var result = await trackingClient.QueryByWiqlAsync(wiql);
        }
EN

回答 2

Stack Overflow用户

发布于 2020-12-02 03:15:26

在这种情况下,我将遵循这里的基础知识,参考OWASP关于SQL injection的指南,我们可以肯定地采用以下两种做法。

转义所有用户提供的Input

  • Whitelist

输入验证

白名单输入验证

可以通过将合法输入列入白名单来允许合法输入进入系统,白名单通常比黑名单更可靠,因为在这种情况下,有效组合的集合通常是有限的。在任何情况下,这都应该是主要的防御措施,并且可以与其他输入验证技术结合使用。

转义所有用户提供的输入的

这项技术是这样工作的。每个系统支持特定于某些类型的查询的一个或多个字符转义方案。如果您随后使用正确的转义方案对所有用户提供的输入进行转义,则系统不会将输入与开发人员编写的WiQL代码混淆。

有关支持的转义字符的更多参考信息,请参阅此处的https://docs.microsoft.com/en-us/azure/devops/boards/queries/wiql-syntax?view=azure-devops

将建议您进一步阅读How to escape search strings in TFS Code Search

票数 1
EN

Stack Overflow用户

发布于 2020-12-02 15:59:38

这里的WIQL只能查看工作项,它不会向数据库注入任何数据。它等同于从web门户或从支持的客户端创建查询,例如Visual Studio团队资源管理器和团队资源管理器Everywhere。检查下面的链接:

https://docs.microsoft.com/en-us/azure/devops/boards/queries/using-queries?view=azure-devops

默认情况下,具有利益相关者访问权限的所有项目成员和用户都可以查看和运行托管查询。如果您的意思是不希望用户使用DevOps REST api运行工作项查询。您需要从团队项目中移除该用户。

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

https://stackoverflow.com/questions/65094691

复制
相关文章

相似问题

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