[FxCop.设计规则]2. 程序集应该拥有有效的强命名

Fxcop规则说明文档 FxCop是一个代码分析工具,它依照微软.NET框架的设计规范对托管代码assembly(可称为程序集,assembly实际上指的就是.net中的.exe或者.dll文件(不包括netmodule文件),这种文件中包含四种信息:assembly的清单(包括引用外部的assembly、netmodule与资源文件及包含在同一文件中的assembly);类型描述信息,包括版本信息与类的描述等;MSIL微软中间语言;资源(图标等))进行检查。它使用基于规则的引擎,来检查出你代码中不合规范的部分;你也可以定制自己的规则加入到这个引擎。这个工具微软免费提供。最新版需要.NET 2.0支持;此外,也有一个较老的针对.NET1.1的版本。 立即下载

 

版权声明:

 

本文由timewolf完成,首发于优快云 ,作者保留版权。
未经许可,不得使用于任何商业用途。
欢迎转载,但请保持文章及版权声明完整。
如需联络请发邮件:karla9(AT)eyou(dot)com

原文引用:

Assemblies should have valid strong names

TypeName:

AssembliesShouldHaveValidStrongNames

CheckId:

CA2210

Category:

Microsoft.Design

Message Level:

CriticalError

Certainty:

95%

Breaking Change:

NonBreaking


Cause: An assembly is not signed with a strong name, the strong name could not be verified, or the strong name would not be valid without the current registry settings of the computer.

Rule Description

This rule retrieves and verifies the strong name of an assembly. A violation occurs if any of the following are true:

  • The assembly does not have a strong name.
  • The assembly was altered after signing.
  • The assembly is delay-signed.
  • The assembly was incorrectly signed, or signing failed.
  • The assembly requires registry settings to pass verification. For example, the Strong Name tool (Sn.exe) was used to skip verification for the assembly.

The strong name protects clients from unknowingly loading an assembly that has been tampered with. Assemblies without strong names should not be deployed outside of very limited scenarios. If you share or distribute assemblies that are not correctly signed, the assembly can be tampered with, the common language runtime might not load the assembly, or the user might have to disable verification on his or her computer. An assembly without a strong name suffers from the following drawbacks:

  • Its origins cannot be verified.
  • The common language runtime cannot warn users if the contents of the assembly have been altered.
  • It cannot be loaded into the global assembly cache.

Note that to load and analyze a delay-signed assembly, you must disable verification for the assembly.

How to Fix Violations

To fix a violation of this rule, use the Strong Name tool (sn.exe) to create a key file and sign the assembly with a strong name using one of the following procedures:

When to Exclude Messages

Only exclude a message from this rule if the assembly is used in an environment where tampering with the contents is not a concern.

引发原因:

1.  程序集没有使用强命名进行签名

2.  强命名不能被校验

3.  程序集的强命名依赖于当前计算机的设置才有效。

规则描述:

这个规则读取并校验一个程序集的强命名,下面任何一条都会引起这条规则校验失败:

1.  程序集没有进行强命名签名

2.  进行签名后,程序集被修改过。

3.  程序集被设置成延迟签名

4.  程序集签名失败

5.  程序集需要一定的注册表设置才能通过强命名校验

例如:通过强命名工具(Sn.exe)设置跳过对这个程序集的强命名校验

 

强命名保护用户不会使用一个被篡改的程序集。一个没有强命名的程序集只能被使用在非常小的范围内。如果你部署一个没有进行正确签名的程序集,程序集就有可能会被肆意篡改,以至于CLR可能会拒绝载入该程序集。在此情况下,用户就不得不将他的计算机设置为忽略强命名校验。

 

没有强命名的程序集有如下缺点:

1.  程序集的来源将不能被保证

2.  用户无从得知程序集是否被篡改过

3.  程序集不能被载入GAC(全局程序集缓存)

注意:如果需要分析一个延迟签名的程序集,必须禁用这条规则。

修复问题:

使用强名称工具(sn.exe)生成Key文件,并用这个文件签名程序集。你可以使用下面的一种方法签名这个程序集:

1.  使用.NET Framework SDK中的程序集连接工具(Al.exe)

2.  在.NET Framework v1.0或v1.1中,使用System.Reflection.AssemblyKeyFileAttribute或System.Reflection.AssemblyKeyNameAttribute特性(Attribute)标记程序集。

3.  在.NET Framework v2.0中,使用/keyfile或者/keycontainer编译指令。(在C++中,使用/KEYFILE or /KEYCONTAINER连接指令)

可否忽略:

只有当用户(或开发者)不在意程序集是否会被篡改的时候,可以忽略该规则引发的警告

文件上传漏洞攻击与防范方法 文件上传漏洞攻击与防范方法 文件上传漏洞简介: 文件上传漏洞是web安全中经常用到的一种漏洞形式。是对数据与代码分离原则的一种攻击。上传漏洞顾名思义,就是攻击者上传了一个可执行文件如木马,病毒,恶意脚本,WebShell等到服务器执行,并最终获得网站控制权限的高危漏洞。 文件上传漏洞危害: 上传漏洞与SQL注入或 XSS相比 , 其风险更大 , 如果 Web应用程序存在上传漏洞 , 攻击者上传... 阅读详情

相关推荐

SpeedyBee F405 V3 50A飞塔装机全攻略:从开箱到首飞避坑指南

本文提供SpeedyBee F405 V3 50A飞塔的详细装机指南,涵盖从开箱检查、硬件焊接、软件配置到安全首飞的全流程。重点剖析了电源连接、固件刷写等高频故障点,帮助FPV新手避开常见陷阱,确保一次成功组装并安全起飞。

weixin_29179311的博客 416

关于.net assembly的strong name问题

<br />按照我当前的理解,.net assembly作为com的接班人,需要解决dll的版本问题。<br /> <br />错误一般发生在运行时,会抛出IO Exception,指明strong name name validation failed.<br /> <br />很多时候,这说明你当前程序引用的assembly是strong name的,需要用gacutil进行注册(就像regsvr32注册com组件一样)<br /> <br />详细用法参见gacutil /?<br /> <br />

realduke2000的专栏 1311

Vue集成天地图:从定位到交互绘图的完整实践指南

本文详细介绍了如何在Vue项目中集成天地图API,从基础配置到高级功能实现,包括定位、标点、画线等交互绘图功能。通过实战代码示例和性能优化技巧,帮助开发者快速掌握Vue与天地图的结合应用,提升地图开发效率。

weixin_29013129的博客 247

[FxCop.设计规则]2. 程序集应该拥有一个有效的强名称

2.     程序集应该拥有一个有效的强名称原文引用:Assemblies should have valid strong namesTypeName:AssembliesShouldHaveValidStrongNamesCheckId:CA2210Category:Microsoft.DesignMessage Level:CriticalErrorCertainty:95% Breakin

cajon的专栏 1445

kaggle-NeurIPS - Open Polymer Prediction 2025-0.069

本文摘要: 本研究基于多任务学习框架,开发了聚合物物理化学性质预测模型,能够根据SMILES字符串同步预测玻璃化转变温度(Tg)、分数游离体积(FFV)等5种关键性质。针对数据缺失率高、样本不均衡等挑战,采用"先补充后扩充"策略整合多源数据,并融合RDKit分子描述符、ChemBERTa语义特征和自编码器特征构建多维度表征。模型采用硬参数共享架构,结合动态加权损失函数和早停机制,在验证集上表现出色,其中密度预测R²达0.92。研究为聚合物性能的高通量预测提供了有效解决方案,对材料智能设计具有重要参考价值。

2302_78976920的博客 782

使用 pip 安装 pygame 遇到的问题

今天尝试学习使用 pygame 时,按照我的习惯一发 pip install 下去,本以为很简单的事情,没想到遇到了不少问题,顺手记录一下。 0x01. 无法找到 “SDL.h” 文件 pygame 是使用 SDL 库写就的游戏框架,自然强依赖于 SDL,我的 python@3 是使用 macOS 的 brew 管理器直接安装的,可能由于不是编译安装的问题,缺少了这个库,继续使用 brew 安...

Mitscherlich的博客 8620

Microsoft FxCop 的设计规则 .

一、Design Rules(设计规约) 1、AbstractTypesShouldNotHaveConstructors    CA1012 不言而喻,抽象类型里即使编写了构造函数也不能直接的调用到。 4、AvoidExcessiveParametersOnGenericTypes    CA1005 避免泛型类型的参数过多,两个是一个分界线,最好不要超过两个。 7、Collectio

胡杨 3030

告别QWebEngineView!用QtLocation+SQLite打造离线地图应用(附完整源码)

本文详细介绍了如何利用QtLocation模块与SQLite数据库构建高性能离线地图引擎,解决传统QWebEngineView方案在网络依赖、内存占用和定制化方面的不足。通过多级缓存机制、异步写入优化和纹理压缩技术,实现工业级应用的稳定运行和高效渲染,特别适合车载导航和野外勘探等场景。

weixin_30431445的博客 362

从编译DotNetOpenAuth中学到的程序集强签名知识

1. 背景 最近在研究DotNetOpenAuth——OAuth的一个.NET开源实现,官方网站:http://dotnetopenauth.net/ 。 从GitHub签出DotNetOpenAuth的源代码发现最新版本已到5.1,而NuGet中发布的版本只是4.3。新版中使用到了.NET 4.5的异步特性(async, await),于是决定直接用最新版。 用最新版,就要自己进行编译。用...

weixin_34380781的博客 165

PyCharm 配置 Anaconda 环境时找不到 python.exe 的解决办法

通过本文的排查步骤与详细解决方案,你应该能够迅速定位并修复 PyCharm 配置 Anaconda 环境时找不到 python.exe 的问题。确保正确设置环境路径、激活目标环境以及手动指定解释器路径是解决此问题的关键。随着开发工具与包管理器的不断更新,类似的问题可能会出现新的变体。持续关注官方文档、社区讨论和版本更新,可以帮助开发者及时适应新变化,并优化工作流程。希望本文提供的分析和代码示例能为你的开发环境配置带来帮助,让你在 PyCharm 与 Anaconda 的高效协同下,专注于创新与代码实现。

s13596191285的博客 3115

【WRF-Urban】使用 LCZ 替换 WRF 运行中的 LUCC 数据

使用 LCZ 替换 WRF 运行中的 LUCC 数据

WW、forever的博客 987

代码审查工具FxCop建议采用的规则总结

续接:    代码走查工具篇FxCop的规则总结与翻译_Part1  代码走查工具篇FxCop的规则总结与翻译_Part2 代码走查工具篇FxCop的规则总结与翻译_Part3    本篇结合我的实际工作需要,总结了一份在实际工作中采纳的规则项目,总结不妥之处,还请多海涵。 一、Design Rules(设计规约) 1、AbstractTypesShou

anders lu 的专栏 4425

070、人脸AE实战:基于人脸检测的亮度优先与背光补偿算法

本文分享了基于人脸检测的亮度优先与背光补偿算法的实战经验。针对逆光自拍场景下人脸过曝问题,作者提出了动态平衡方案: 通过内缩20%的人脸核心区域提取亮度,避免背景干扰 创新性地采用"亮度差+置信度"的背光判定机制 设计动态权重分配策略,人脸权重可在30%-70%间调整 引入平滑处理防止亮度跳变,补偿增益限制在1.5倍以内 关键点在于:不是简单提亮人脸,而是通过分析人脸与背景亮度差,在80-110目标亮度范围内动态调整,实现自然的人脸曝光效果。算法已在实际项目中验证,解决了传统AE在逆光场景下的失效问题。

zzfmlxs的博客 31

代码走查工具篇FxCop的规则总结与翻译_Part3

续接上篇:代码走查工具篇FxCop的规则总结与翻译_Part2 Performancerules(性能规则) 1、AvoidExcessiveLocals   CA1809      避免过多的局部变量,优化性能的常见方法是将值存储于处理器寄存器,而不是内存中,这称为“注册值”。公共语言运行时最多可考虑注册 64 个局部变量。未注册的变量放在堆栈中,必须移到寄存器内方能进行操作。若要

anders lu 的专栏 3352

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

FxCop1.36之二:规则的追加翻译

在网上看到了很多人都研究FxCop所提供的*Rules.Dll,但是翻译的资料有限。本人目前看到比较全的是deadshot123空间里记录的《FxCop 设计规则 》。链接的地址是:http://blog.csdn.net/deadshot123/archive/2006/04/07/654373.aspx 我随即整理了一下,把后面几条规则也翻译了出来:(英文原版的在MSDN里

风标的专栏 2327

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

FxCop命名规则

四、Naming(命名)1.Avoid language specific type names in parameters 避免在参数中使用与特定语言相关的类型(用Uint16代替Ushort) 2.Avoid type names in parameters 避免在外部可见的参数中使用类型名 3.Compound words should be cased correct...

231

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

FxCop 设计规则

翻译不正确的地方,望请指正一、Design(设计)1.Abstract types should not have constructors 抽象类不应该声明构造方法 2.Assemblies should have valid strong names 程序集应该具有强名称 3.Avoid empty interfaces 避免使用空的接口 4.Avoid excess...

155

代码走查工具StyleCop建议采用的规则总结

续接上篇:代码走查工具篇SytleCop的规则总结与翻译,本篇主要是以我个人的观点总结的一份建议使用的Rule点。 建议使用的Rule点 1、公共的接口、类、方法、属性、字段必须添加标准的XML注释(VS自带的代码分析就可以解决该问题) 2、SA1516 : CSharp.Layout : Adjacent elements must be separated by a blank li

anders lu 的专栏 7563

[FXCOP.设计规则]5. 避免命名空间中包含太少的类型

原文引用: Avoid namespaces with few types TypeName

timewolf的专栏 1278

[FxCop.设计规则] 3. 避免定义空的接口

  版权声明:   本文由timewolf完成,首发于优快云,作者保留版权。未经许可,不得使用于任何商业用途。欢迎转载,但请保持文章及版权声明完整。如需联络请发邮件:karla9(AT)eyou(dot)com

timewolf的专栏 1171

[FxCop.设计规则]1. 抽象类型不应具有构造函数

抽象类型不应具有构造函数     TypeName AbstractTypesShouldNotHaveConstructors

timewolf的专栏 1137

[FxCop.设计规则]4. 避免太多的范型参数

4.     避免太多的范型参数原文引用: Avoid excessive parameters on generic types

timewolf的专栏 992

Aspose.OCR for .NET v26 Crack

凭借我们在机器学习技术领域的丰富经验,该 API 能够以卓越的速度和精度识别来自各种来源的文本,包括扫描图像、智能手机照片、屏幕截图和扫描的 PDF 文件。借助Aspose.Words for .NET,开发人员可以在熟悉的 C# 环境中简化文档密集型任务、减少错误并提高工作效率,使其成为任何需要强大文档处理功能的 .NET 应用程序的宝贵工具。此外,该 API 还提供丰富的图像支持,允许处理多种格式的图像,例如 JPEG、PNG、TIFF、GIF 和 BMP。轻松操作文档中的表格、图像和图表。

q2315702359的博客 354

11-01-演进-.NET GC发展史

.NET GC发展史映射硬件演进:从单核STW到多核并发,再到区域化细粒度回收。历经分代管理、ServerGC、BackgroundGC、LOH自动压缩、POH隔离、DATC自适应线程数及Region-based管理等关键革新,代码量从5000行增至4万+,复杂度指数上升。每一步优化均在暂停时间、吞吐量与资源开销间权衡,体现“实用主义”哲学。核心启示:GC演进由硬件驱动,方向明确——更短暂停、更高效率,但代价是工程复杂性持续攀升。

设计 AI 玩游戏🎮 339

.NET 10 的性能提升

你不需要重写代码去用Span<T>,不需要手工池化对象,甚至不需要调整 GC 配置。JIT 编译器变得更“聪明”了,它会在编译时替你完成一些过去需要手动干预的优化。但与此同时,.NET 10 也引入了一个默认开启的 GC 行为变化,它在某些场景下会。这篇文章想讲清楚:哪些性能是你“自动”拿到的,哪些是需要你主动审视和取舍的。

qq_41019429的博客 324
上一篇: [FxCop.设计规则]1. 抽象类型不应具有构造函数
下一篇: [FxCop.设计规则] 3. 避免定义空的接口
timewolf
博客等级 码龄23年 12粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值