The*_*oon 5 c# sql sql-server sql-injection
我们有一个 SQL 语句,它SqlBuilder在 from 子句中使用set the table name。数据库是 SQL Server 2008 及更高版本。
var sqlBuilder = new SqlBuilder();
sqlBuilder.Select("*").From(tableName);
sqlBuilder.Where("...");
Connection.BuilderQuery<dynamic>(sqlBulder).Select(Map);
Run Code Online (Sandbox Code Playgroud)
我想知道这是否是 SQL 注入风险?我怎样才能减轻这种风险?还是SqlBuilder管这些东西?
我可以通过将表名括在方括号中来降低风险吗?例如
sqlBuilder.From("[" + tableName + "]");
Run Code Online (Sandbox Code Playgroud)
此外,如果有人可以在FROM子句中提供一些 SQL 注入攻击的示例,我将不胜感激,以便我可以了解它的工作原理并创建测试。
我不知道是什么SqlBuilder,但这里有一个利用注入的示例:假设您有一个代码可以执行以下操作:
var myFullQuery = string.Format("SELECT * FROM {0} WHERE A = 1", externalInput);
Run Code Online (Sandbox Code Playgroud)
然后针对数据库执行此操作。如果恶意用户发送此字符串作为输入:ValidTableName; DELETE FROM ValidTableName; SELECT * FROM ValidTableName
该myFullQuery变量将设置为:SELECT * FROM ValidTableName; DELETE FROM ValidTableName; SELECT * FROM ValidTableName WHERE A = 1并且您已经丢失了整个表...显然可以通过这种方式实现更具破坏性的命令...
| 归档时间: |
|
| 查看次数: |
993 次 |
| 最近记录: |