CWE-495: Private Data Structure Returned From A Public Method(公有方法返回私有数据结构)

 ID: 495

类型:变量
结构:简单

状态:草稿

描述

一个声明为public的方法,返回对私有数据结构的引用,然后可以以意外的方式修改该私有数据结构。

相关视图

与“研究层面”视图(CWE-1000)相关

与“开发层面”视图(CWE-699)相关

引入模式

阶段

说明

实现

 

应用平台

语言

C (出现的可能性不确定)

C++ (出现的可能性不确定)

Java (出现的可能性不确定)

C# (出现的可能性不确定)

后果

范围

冲击

可能性

完整性

技术冲击: 修改应用数据

数据结构的内容可以从预期范围之外进行修改。

 

示例

例1

这里,Java类中的公共方法返回对私有数组的引用。假设Java中的数组是可变的,对返回引用进行的任何修改都会反映在原始私有数组中。

(问题代码)

Example Language: Java 

private String[] colors;
public String[] getColors() {

return colors;

}

例2

在本例中,color类定义了返回对私有成员(数组类型和整数类型)的非常量引用的函数,然后在类的控制之外对这些成员进行任意更改。

(问题代码)

Example Language: C++ 

class Color
{

private:

int[2] colorArray;
int colorValue;

public:

Color () : colorArray { 1, 2 }, colorValue (3) { };
int[2] & fa () { return colorArray; } // return reference to private array
int & fv () { return colorValue; } // return reference to private integer

};

int main ()
{

Color c;

c.fa () [1] = 42; // modifies private array element
c.fv () = 42; // modifies private int

return 0;

}

应对措施

阶段: 实现

声明私有方法

阶段: 实现

克隆成员数据并将未修改的数据版本保留为对象专用。

阶段: 实现

克隆成员数据并将未修改的数据版本保留为对象专用。

种属

 

关系

类型

ID

名称

属于

485

7PK - Encapsulation

属于

884

CWE Cross-section

属于

963

SFP Secondary Cluster: Exposed Data

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值