gpt4 book ai didi

c# - 没有参数的 SQL 注入(inject)攻击的任何风险,但强制用户输入仅限于正则表达式 [a-zA-Z][a-zA-Z0-9]*?

转载 作者:行者123 更新时间:2023-11-29 13:27:02 27 4
gpt4 key购买 nike

我正在将 Entity Framework 与 PostgreSQL 结合使用。我需要编写一个遵循这种格式的查询:

await Context.Database.ExecuteSqlCommandAsync("ALTER TABLE " + tableName + " ADD " + columnName + " " + sqlType);

如您所见,不幸的是我需要使用用户输入表名、列名和该列的类型。不幸的是,PostgreSQL 不支持这些类型输入的参数(例如 SQL Server 支持)。所以除了像这样进行字符串连接之外,我真的没有其他选择。但是,我可以保证 tableNamecolumnName 都将使用正则表达式构造:

[a-zA-Z][a-zA-Z0-9]*

换句话说,我强制它们只由小写字母、大写字母和数字组成。没有标点符号或其他特殊字符。至于 sqlType,我可以保证这将是与该列的类型对应的 PostgreSQL 类型的字符串(例如 "int4""numeric"“uuid” 等)。它肯定不会是其他任何东西,因为我使用字典在 .NET 类型和这些类型之间以字符串格式进行映射。

那么有人知道这是否仍然存在 SQL 注入(inject)攻击的风险吗?还有什么我可以做的吗?

最佳答案

您可以放心使用该正则表达式(因为它不包含任何 Unicode 字符和标点符号)。

关于c# - 没有参数的 SQL 注入(inject)攻击的任何风险,但强制用户输入仅限于正则表达式 [a-zA-Z][a-zA-Z0-9]*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31888353/

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