培训
模块
Guide to Secure .NET Development with OWASP Top 10 - Training
Evaluate security risks that come with insecure application development patterns and practices
如果要将应用迁移到 .NET 7,则此处列出的中断性变更可能会影响到你。 变更按技术领域分组,例如 ASP.NET Core 或 Windows 窗体。
本文指出每个中断性变更是二进制兼容还是源兼容:
标题 | 二进制兼容 | 源兼容 |
---|---|---|
API 控制器操作尝试从 DI 推断参数 | ✔️ | ❌ |
以 ASPNET 为前缀的环境变量优先级 | ✔️ | ✔️ |
远程身份验证提供程序的 AuthenticationAsync | ✔️ | ❌ |
WebAssembly 应用中的身份验证 | ❌ | ✔️ |
默认身份验证方案 | ❌ | ✔️ |
某些 Microsoft.AspNetCore.Mvc.Core 日志消息的事件 ID 已更改 | ❌ | ✔️ |
回退文件终结点 | ❌ | ✔️ |
IHubClients 和 IHubCallerClients 隐藏成员 | ✔️ | ❌ |
Kestrel:已删除默认 HTTPS 绑定 | ❌ | ✔️ |
已删除 Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv and libuv.dll | ❌ | ❌ |
Microsoft.Data.SqlClient 已更新到 4.0.1 | ✔️ | ❌ |
中间件不再遵从具有 null 请求委托的终结点 | ❌ | ✔️ |
MVC 对模型绑定中空主体的检测已更改 | ❌ | ✔️ |
输出缓存 API 更改 | ❌ | ❌ |
SignalR 中心方法尝试从 DI 解析参数 | ✔️ | ❌ |
标题 | 二进制兼容 | 源兼容 |
---|---|---|
API 已过时并带有默认诊断 ID | ✔️ | ❌ |
API 已过时并带有非默认诊断 ID | ✔️ | ❌ |
BinaryFormatter 序列化 API 生成编译器错误 | ✔️ | ❌ |
BrotliStream 不再允许未定义的 CompressionLevel 值 | ❌ | ✔️ |
Visual Studio 中的 C++/CLI 项目 | ✔️ | ❌ |
反射调用 API 异常的更改 | ❌ | ✔️ |
不可回收的 AssemblyLoadContext 中的可回收程序集 | ❌ | ✔️ |
DateTime 加法方法精度更改 | ✔️ | ✔️ |
NaN 的 equals 方法行为变更 | ❌ | ✔️ |
EventSource 回调行为 | ✔️ | ✔️ |
PatternContext<T> 上的泛型类型约束 | ❌ | ❌ |
删除了旧版 FileStream 策略 | ❌ | ✔️ |
对较旧框架的库支持 | ❌ | ❌ |
数字格式字符串的最大精度 | ❌ | ✔️ |
更正了范围的正则表达式模式 | ✔️ | ✔️ |
SerializationFormat.Binary 已过时 | ❌ | ❌ |
删除了 System.Drawing.Common 配置开关 | ✔️ | ✔️ |
System.Runtime.CompilerServices.Unsafe NuGet 包 | ✔️ | ✔️ |
符号链接上的时间字段 | ❌ | ✔️ |
跟踪链接缓存条目 | ❌ | ✔️ |
验证 BrotliStream 的 CompressionLevel | ❌ | ✔️ |
标题 | 二进制兼容 | 源兼容 |
---|---|---|
app.config 中的 System.diagnostics 条目 | ❌ | ✔️ |
标题 | 二进制兼容 | 源兼容 |
---|---|---|
解密 EnvelopedCms 不会双重展开 | ❌ | ✔️ |
动态 X509ChainPolicy 验证时间 | ❌ | ✔️ |
X500DistinguishedName 解析易记名称 | ❌ | ✔️ |
标题 | 二进制兼容 | 源兼容 |
---|---|---|
默认裁剪的所有程序集 | ✔️ | ❌ |
已禁用多级查找 | ❌ | ✔️ |
64 位 Windows 上的 x86 主机路径 | ✔️ | ✔️ |
TrimmerDefaultAction 已弃用 | ✔️ | ❌ |
标题 | 二进制兼容 | 源兼容 |
---|---|---|
将配置绑定到字典扩展值 | ✔️ | ✔️ |
Windows Shell 启动的应用的 ContentRootPath | ❌ | ✔️ |
环境变量前缀 | ❌ | ✔️ |
标题 | 二进制兼容 | 源兼容 |
---|---|---|
全球化 API 在 Windows Server 上使用 ICU 库 | ❌ | ✔️ |
标题 | 二进制兼容 | 源兼容 |
---|---|---|
仿真环境下的 RuntimeInformation.OSArchitecture | ❌ | ✔️ |
标题 | 二进制兼容 | 源兼容 |
---|---|---|
构造函数接受基接口而不是具体类型 | ❌ | ✔️ |
已移除流方向帮助程序方法 | ❌ | ❌ |
新的 UpdateBackground 参数 | ❌ | ✔️ |
已重命名 ScrollToRequest 属性 | ❌ | ❌ |
删除了某些 Windows API | ❌ | ❌ |
标题 | 二进制兼容 | 源兼容 |
---|---|---|
AllowRenegotiation 默认为 false | ❌ | ❌ |
Linux 上的自定义 ping 有效负载 | ❌ | ✔️ |
Socket.End 方法不引发 ObjectDisposedException | ❌ | ✔️ |
标题 | 二进制兼容 | 源兼容 |
---|---|---|
某些项目的自动 RuntimeIdentifier | ✔️ | ❌ |
仅用于发布的自动 RuntimeIdentifier | ❌ | ❌ |
CLI 控制台输出使用 UTF-8 | ❌ | ❌ |
完成后控制台编码不是 UTF-8 | ❌ | ✔️ |
.NET 7 中自定义类型的 MSBuild 序列化 | ❌ | ❌ |
并行 SDK 安装 | ❌ | ❌ |
根文件夹中的工具清单 | ✔️ | ✔️ |
.NET 7 SDK 的版本要求 | ✔️ | ✔️ |
dotnet test:将 -a 切换到别名 --arch ,而不是 --test-adapter-path |
❌ | ❌ |
dotnet test:将 -r 切换到别名 --runtime ,而不是 --results-dir |
❌ | ❌ |
--output 选项对解决方案级别的命令不再有效 |
❌ | ❌ |
SDK 不再调用 ResolvePackageDependencies | ✔️ | ❌ |
标题 | 二进制兼容 | 源兼容 |
---|---|---|
反序列化 -0 时,DataContractSerializer 会保留符号 | ❌ | ✔️ |
使用前导空格或尾随空格反序列化版本类型 | ❌ | ✔️ |
JsonSerializerOptions 复制构造函数包括 JsonSerializerContext | ❌ | ✔️ |
对象类型的多态序列化 | ❌ | ✔️ |
System.Text.Json 源生成器回退 | ❌ | ✔️ |
标题 | 二进制兼容 | 源兼容 |
---|---|---|
过时和警告 | ✔️ | ❌ |
一些 API 引发 ArgumentNullException | ❌ | ✔️ |
标题 | 二进制兼容 | 源兼容 | 向后兼容 |
---|---|---|---|
在文本编辑器上还原拖放操作行为 | ✔️ | ✔️ | ❌ |
标题 | 二进制兼容 | 源兼容 |
---|---|---|
XmlSecureResolver 已过时 | ❌ | ❌ |
培训
模块
Guide to Secure .NET Development with OWASP Top 10 - Training
Evaluate security risks that come with insecure application development patterns and practices