C# 的 CodeQL 查询帮助¶
访问以下文章以查看以下查询套件中包含的查询的文档
default
:在 GitHub 上的 CodeQL 代码扫描中默认运行的查询。security-extended
:来自default
的查询,以及精度和严重程度略低的额外安全查询。security-and-quality
:来自default
、security-extended
的查询,以及额外的可维护性和可靠性查询。
这些查询发布在 CodeQL 查询包 codeql/csharp-queries
中(变更日志,源代码)。
有关可作为编写您自己的查询的构建块的较短查询,请参阅 CodeQL 仓库中的示例查询。
- ‘requireSSL’ 属性未设置为 true
- 在等待期间保持锁定
- ASP.NET 配置文件启用了目录浏览
- 存档提取期间的任意文件访问(“Zip Slip”)
- 程序集路径注入
- 错误的动态调用
- 错误的多重迭代
- 包含单个 Response.Write() 的代码块
- 包含过多语句的代码块
- 调用 GC.Collect()
- 对值类型表达式调用 ReferenceEquals(…)
- 调用过时方法
- 调用非托管代码
- 从抽象集合到具体集合的转换
- 将 'this' 转换为类型参数
- 转换为相同类型
- 'is' 测试链
- 传递给 StringBuilder 构造函数的字符
- 类未实现 Equals(object)
- 类与超类具有相同的名称
- 类实现 ICloneable
- 敏感信息的明文存储
- 比较为常数
- 比较相同的值
- 复杂条件
- 常数条件
- 容器内容从未被访问
- 容器内容从未被初始化
- 容器大小与零进行比较。
- Cookie 安全性:过于宽泛的域
- Cookie 安全性:过于宽泛的路径
- Cookie 安全性:持久性 Cookie
- 创建 ASP.NET 调试二进制文件可能会泄露敏感信息
- 跨站脚本攻击
- 来自将用户输入与昂贵的正则表达式进行比较的拒绝服务
- 取消引用的变量始终为 null
- 取消引用的变量可能为 null
- 反序列化不受信任的数据
- 反序列化的委托
- 如果在执行期间抛出异常,则可能不会调用 Dispose
- 双重检查锁定不是线程安全的
- 对 'this' 进行可疑的向下转换
- 对 'this' 进行可疑的类型测试
- 条件语句的空分支或空循环体
- 空的锁定语句
- 配置文件中的空密码
- 使用 ECB 进行加密
- 对浮点数进行相等性检查
- 对集合进行 Equals
- 对不可比较的类型进行 Equals
- Equals 不应使用“as”
- Equals 不应使用“is”
- 错误的类比较
- 公开内部表示
- 暴露私有信息
- 无法放弃会话
- 字段屏蔽超类中的字段
- 无用的条件
- 对字段进行无用的同步
- 泛型捕获语句
- 包含凭据的硬编码连接字符串
- 硬编码凭据
- 未定义 GetHashCode 的哈希值
- 禁用了标头检查
- 无法执行的数组转换
- 对代码生成控制不当
- 不当的亲密关系
- CompareTo 和 Equals 不一致
- Equals(object) 和 GetHashCode() 不一致
- 不一致的锁定顺序
- 属性同步不一致
- 使用 ContainsKey 的效率低下
- 通过异常泄露信息
- 通过传输数据泄露信息
- 不安全的直接对象引用
- 不安全的 SQL 连接
- 不安全的随机性
- 无效的字符串格式
- 从用户控制的来源构建 LDAP 查询
- 局部作用域变量遮蔽成员
- 在锁定语句中锁定 'this' 对象
- 从用户输入创建日志条目
- 错误处理日本纪元开始日期
- 误导性的缩进
- 错失 'readonly' 机会
- 错失 'using' 机会
- 错失使用 All 的机会
- 错失使用 Cast 的机会
- 错失使用 OfType 的机会
- 错失使用 Select 的机会
- 错失使用 Where 的机会
- 错失使用三元运算符的机会
- 局部 IDisposable 上缺少 Dispose 调用
- 缺少 X-Frame-Options HTTP 标头
- 缺少 XML 验证
- 文档注释中缺少摘要
- 缺少跨站点请求伪造令牌验证
- 缺少函数级访问控制
- 缺少全局错误处理程序
- 嵌套的 'if' 语句可以合并
- 使用相同变量的嵌套循环
- Equals(object) 的空参数
- 与容器长度相比,出现“差一”错误
- 已禁用页面请求验证
- 配置文件中的密码
- 错误处理不佳:捕获 NullReferenceException
- 错误处理不佳:空的捕获块
- 可能出现精度丢失
- 可能不安全的使用非短路逻辑
- 可能不正确的 CompareTo(…) 签名
- 可能不正确的 Equals(…) 签名
- 设置属性时不使用属性值
- 对 Equals(object) 的递归调用
- 对运算符== 的递归调用
- 多余的 Select
- 多余的 ToString() 调用
- 对 System.Object 进行引用相等性测试
- 正则表达式注入
- 资源注入
- 重新抛出异常变量
- 从用户控制的来源构建 SQL 查询
- 自我赋值
- 序列化检查绕过
- 静态字段由实例方法写入
- 循环中的字符串连接
- 循环中创建 StringBuilder
- 线程不安全地捕获 ICryptoTransform 对象
- 线程不安全地使用静态 ICryptoTransform 字段
- 过多的 'ref' 参数
- 来自远程来源的 URL 重定向
- Equals 方法中的未检查转换
- 不受控制的命令行
- 路径表达式中使用的不受控制的数据
- 不受控制的格式字符串
- 非托管代码
- 不必要的复杂布尔表达式
- 对 'DateTime' 构造函数使用不安全的年份参数
- 在非静态上下文中,对静态集合成员的访问未同步
- 不安全地读取不受信任的 XML
- 未使用的标签
- 未验证的局部指针运算
- 使用默认的 ToString()
- 使用文件上传
- 无用的 ?? 表达式
- 对局部变量的无用赋值
- 对 GetHashCode() 的无用调用
- 无用的类型测试
- 无用的向上转换
- 用户控制绕过敏感方法
- 值遮蔽
- 值遮蔽:服务器变量
- 构造函数或析构函数中的虚拟调用
- 弱加密
- 弱加密:密钥长度不足
- 弱加密:RSA 填充不足
- XML 注入
- XPath 注入