应用软件安全编程--08污点数据作为循环边界

将污点数据作为循环边界可能导致程序无限循环,进而导致消耗过多的系统资源,造成拒绝服务攻 击(denial-of-service(DoS)attack)。

对于污点数据作为循环边界的情况,示例1给出了不规范用法(C/C++语言)示例。示例2给出 了规范用法(C/C++语言)示例。

示例1:

void  iterateFoo bad(){

unsigned num;

int  i;

scanf("%u",&num);

for (i=0;i(num;i++){

foo();

 }

 }

在如上函数中,循环次数由用户直接输入,而未进行验证。该行为可被攻击者控制。

示例2:

void  iterateFoo  good(){

unsigned num;

int  i;

scanf("%u",&num);

if(num)20)

return;

for(i=0;i(num;i++){

foo();

 }

 }

在如上代码中,添加了对污点数据的前置判断,避免了过多次数的循环。

你可能感兴趣的:(应用软件安全编程,安全,算法)