首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >警告: SQL注入攻击

警告: SQL注入攻击
EN

Stack Overflow用户
提问于 2020-08-20 17:13:03
回答 1查看 112关注 0票数 0

我一直在尝试使我的代码适应FxCop规则,我发现了这样的警告: CA2100检查传递给'OleDbDataAdapter.OleDbDataAdapter( string,OleDbConnection)‘中的'WavesShaperNew.Parse(string,int)’的查询字符串是否存在可能的SQL注入攻击。如果字符串是使用任何用户输入组成的,请考虑使用存储过程或参数化SQL查询,而不是使用字符串串联生成查询。

我已经搜索了Microsoft Official Site和类似的问题,但仍然不明白这个警告是什么意思,以及如何解决它。

代码语言:javascript
复制
ComboBox sheets = new ComboBox();
TextBox startRange = new TextBox();
TextBox endRange = new TextBox();

string query = string.Format("SELECT * FROM[" + sheets.SelectedItem + startRange.Text + ":" + endRange.Text + "]");
query = query.Replace("'", "");

OleDbDataAdapter adapter = new OleDbDataAdapter(query, con);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-20 17:39:59

通常,您应该参数化所有的SQL查询以避免SQL injection攻击,而不是使用字符串连接/内插。

但是,表名不能参数化。

为了避免SQL注入,您可以将有效的表名加入白名单:

代码语言:javascript
复制
var queryableTables = new HashSet<string>
{
    "table1",
    "table2",
    // etc.
};

string tableName = sheets.SelectedItem + startRange.Text;

if (!queryableTables.Contains(tableName))
{
    throw new InvalidOperationException($"{tableName} is not queryable");
}

string query = $"SELECT * FROM [{tableName}]");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63501916

复制
相关文章

相似问题

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