CWE-481:分配而不是比较
查看自定义信息:
该表显示了与该弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
该清单显示了可能出现的弱点的可能区域。这些可能适用于特定的命名语言,操作系统,体系结构,范式,技术或一类此类平台。该平台与给定弱点出现在该实例的频率一起列出。
语言 C(不确定的患病率) C ++(不确定的患病率) 爪哇(不确定的患病率) C#(不确定的患病率)
该表指定与弱点相关的不同个人后果。该范围确定了违反的应用程序安全区域,而影响描述了如果对手成功利用这一弱点,就会产生负面的技术影响。其可能性提供了有关预期相对于列表中其他后果的特定后果的可能性的信息。例如,可能会利用弱点来实现一定的影响,但很可能会利用它来实现不同的影响。
示例1 以下C/C ++和C#示例试图针对整数值100验证INT输入参数。
(不良代码)
示例语言:C
int iSvalid(int value){
如果(值= 100){ }
printf(“ value是有效的\ n”); }返回(1); printf(“值无效\ n”); 返回(0);
(不良代码)
示例语言:C#
bool iSvalid(int value){
如果(值= 100){ }
Console.Writeline(“ Value是有效的。”); }返回true; Console.Writeline(“值无效。”); 返回false; 但是,在IF语句中要评估的表达式使用分配运算符“ =”而不是比较操作员“ ==”。使用分配运算符代替比较操作员的结果导致int变量在本地重新分配,并且IF语句中的表达式将始终评估表达式的右侧值。这将导致输入值未正确验证,这可能会导致意外的结果。 示例2 在此示例中,我们说明当通过引用而不是通过值传递值时,分配而不是比较会影响代码。考虑从用户输入处理字符串的方案。假设字符串已经格式化,以使不同的用户输入与结肠字符串联。当调用过程带函数时,结肠字符的测试将导致结肠字符的插入,并添加新的输入分离器。由于字符串是通过引用传递的,因此数据前哨将插入原始字符串(CWE-464),并将更改输入的进一步处理,可能会畸形。
(不良代码)
示例语言:C
void processString(char *str){ }
int i; }for(i = 0; i
ProcessChar(str [i]); }否则if(str [i] =':'){
MoveToneWinput();} }示例3 以下Java示例尝试根据输入参数的布尔值执行一些处理。但是,在IF语句中要评估的表达式使用分配运算符“ =”而不是比较操作员“ ==”。与先前的示例一样,该变量将在本地重新分配,IF语句中的表达式将评估为真实和意外的处理。
(不良代码)
示例语言:爪哇
public void checkvalid(布尔伊斯瓦利德){
如果(iSvalid = true){ }
system.out.println(“执行处理”); }DosomethingImptem(); 别的 {
system.out.println(“无效,不执行处理”); }返回; 虽然当需要比较操作员时,大多数Java编译器都会捕获分配运算符的使用,但对于Java中的布尔变量,允许在表达式中使用分配运算符。如果可能的话,请尝试避免使用Java中布尔变量的比较操作员。取而代之的是,就像以下代码一样,让变量的值代表自己。
(好代码)
示例语言:爪哇
public void checkvalid(布尔伊斯瓦利德){
如果(Isvalid){ }
system.out.println(“执行处理”); }DosomethingImptem(); 别的 {
system.out.println(“无效,不执行处理”); }返回; 另外,要测试错误,只需使用布尔值非操作员即可。
(好代码)
示例语言:爪哇
public void checkvalid(布尔伊斯瓦利德){
如果(!iSvalid){ }
system.out.println(“无效,不执行处理”); }返回; system.out.println(“执行处理”); DosomethingImptem(); 示例4 以下示例证明了弱点。
(不良代码)
示例语言:C
void呼叫(int foo){
if(foo = 1)printf(“ foo \ n”); }int main(){ 称为(2); 返回0;
此成员关系表显示了其他CWE类别和视图,将此弱点称为成员。该信息通常可用于理解弱点适合外部信息源的何处。
提供更多信息 - 请选择其他过滤器。
|
使用共同弱点枚举(CWE)和本网站的相关参考使用条款。CWE由美国国土安全部(DHS)网络安全和基础设施安全局(CISA),由国土安全系统工程和开发研究所(HSSEDI)由manbetx客户端首页(MITER)。版权所有©2006–2023,Miter Comanbetx客户端首页rporation。CWE,CWSS,CWRAF和CWE徽标是Miter Corporation的商标。manbetx客户端首页 |