Browse Source

修复SQL注入漏洞-前端通过排序参数可直接构造特殊SQL语句执行

Linhaibo 11 months ago
parent
commit
5c794d8a56
1 changed files with 1 additions and 0 deletions
  1. 1 0
      Admin.NET/Admin.NET.Core/Extension/RepositoryExtension.cs

+ 1 - 0
Admin.NET/Admin.NET.Core/Extension/RepositoryExtension.cs

@@ -145,6 +145,7 @@ public static class RepositoryExtension
         // 排序是否可用-排序字段和排序顺序都为非空才启用排序
         if (!string.IsNullOrEmpty(nowPagerInput.Field) && !string.IsNullOrEmpty(nowPagerInput.Order))
         {
+            nowPagerInput.Field = Regex.Replace(nowPagerInput.Field, @"[\s;()\-'@=/%]", ""); //过滤掉一些关键字符防止构造特殊SQL语句注入
             var col = queryable.Context.EntityMaintenance.GetEntityInfo<T>().Columns.FirstOrDefault(u => u.PropertyName.Equals(nowPagerInput.Field, StringComparison.CurrentCultureIgnoreCase));
             var dbColumnName = col != null ? col.DbColumnName : nowPagerInput.Field;
             orderStr = $"{prefix}{iSqlBuilder.GetTranslationColumnName(dbColumnName)} {(nowPagerInput.Order == nowPagerInput.DescStr ? "Desc" : "Asc")}";