CWE-783:操作员优先逻辑错误
查看自定义信息:
该表显示了与该弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
与观点“研究概念”相关(CWE-1000)
引言的不同模式提供了有关如何以及何时引入这种弱点的信息。该阶段识别可能发生介绍的生命周期中的一个点,而音符提供了与给定阶段中引言有关的典型情况。
该清单显示了可能出现的弱点的可能区域。这些可能适用于特定的命名语言,操作系统,体系结构,范式,技术或一类此类平台。该平台与给定弱点出现在该实例的频率一起列出。
语言 C(很少普遍) C ++(很少普遍) 班级:不是特定语言的(很少普遍)
该表指定与弱点相关的不同个人后果。该范围确定了违反的应用程序安全区域,而影响描述了如果对手成功利用这一弱点,就会产生负面的技术影响。其可能性提供了有关预期相对于列表中其他后果的特定后果的可能性的信息。例如,可能会利用弱点来实现一定的影响,但很可能会利用它来实现不同的影响。
示例1 在下面的示例中,方法validateuser呼吁另一种方法来验证用户的用户名和密码并返回成功或失败代码。
(不良代码)
示例语言:C
#Define Fail 0
#Define成功1 ... int verateuser(char *用户名,char *password){ int iSuser = fail; //调用方法以身份验证用户名和密码 //如果身份验证失败,则返回失败,否则返回成功 if(isuser = authenticateUser(用户名,密码)==失败){
返回iSuser; }别的 {
Isuser =成功; }返回iSuser; 但是,在使用错误的操作员优先逻辑的IF语句中调用了用户名和密码进行身份验证的方法。由于比较运算符“ ==”的优先级高于分配运算符“ =”,因此将首先评估比较操作员,如果方法返回失败,则比较将是正确的,将返回变量设置为true and Success将退还。通过在IF语句的表达式中正确使用括号,可以轻松解决此操作器优先级逻辑误差,如下所示。
(好代码)
示例语言:C
...
if(((isuser = authenticateUser(用户名,密码))== fail){ ... 示例2 在此示例中,该方法计算会计/财务应用程序的投资回报率。投资回报是通过从当前价值中减去初始投资成本,然后除以初始投资成本来计算的。
(不良代码)
示例语言:爪哇
公共双重计算电流投资(Double CurrentValue,double InitialInvestment){
double returnroi = 0.0; //计算投资回报率 returnroi = CurrentValue-初始投资 /初始投资; 返回returnroi; 但是,由于公式中的运算符优先级逻辑不正确,投资计算的回报将无法产生正确的结果。除法运营商的优先级高于减去运营商,因此等式将将初始投资成本除以初始投资成本,而初始投资成本只会从当前价值中减去。同样,该操作员的优先逻辑误差可以通过在方程式内正确使用括号来解决,如下所示。
(好代码)
示例语言:爪哇
...
returnRoi =(CurrentValue-初始投资) /初始投资; ... 请注意,应验证本示例中的初始投资变量,以确保避免使用零误差的潜在划分大于零(CWE-369)。
此成员关系表显示了其他CWE类别和视图,将此弱点称为成员。该信息通常可用于理解弱点适合外部信息源的何处。
提供更多信息 - 请选择其他过滤器。
|
使用共同弱点枚举(CWE)和本网站的相关参考使用条款。CWE由美国国土安全部(DHS)网络安全和基础设施安全局(CISA),由国土安全系统工程和开发研究所(HSSEDI)由manbetx客户端首页(MITER)。版权所有©2006–2023,Miter Comanbetx客户端首页rporation。CWE,CWSS,CWRAF和CWE徽标是Miter Corporation的商标。manbetx客户端首页 |