Просмотр исходного кода

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

Linhaibo 11 месяцев назад
Родитель
Сommit
5c794d8a56
1 измененных файлов с 1 добавлено и 0 удалено
  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")}";