码迷,mamicode.com
首页 > 其他好文 > 详细

command injection(命令注入)

时间:2015-09-23 19:21:37      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

  命令注入是十分致命的安全漏洞,在编码过程中需要予以重视。防止命令注入有一种方便快捷的方法,就是加转义字符过滤用户敏感输入。

示例代码:

 1 char* CGlobe::RejectCommandInjection(char *strCmd)
 2 {
 3     // 通过加转义字符防止命令注入
 4 
 5     memset(m_strBuf,0,sizeof(m_strBuf));
 6 
 7     int len = strlen(strCmd);
 8     //防止字符串长度溢出
 9     if(len > MAX_LEN/2)
10         len = MAX_LEN/2 - 2;
11     int x,y;
12     for(x=0,y=1;x<len;x++)
13     {
14         switch(strCmd[x])
15         {
16         case ;:
17         case |:
18         case >:
19         case <:
20         case [:
21         case ]:
22         case &:
23         case #:
24         case {:
25         case }:
26         case ^:
27         case (:
28         case ):
29         case $:
30             m_strBuf[y++] = \\;
31             m_strBuf[y++] = strCmd[x];
32             break;
33 
34         default:
35              m_strBuf[y++] = strCmd[x];
36 
37         }
38 
39     }
40     //字符串首尾加单引号
41     m_strBuf[0] = \‘;
42     m_strBuf[y] = \‘;
43 
44     return m_strBuf;
45 
46 
47 }

  不过这种方法并不能完全杜绝命令注入,具体可参考php escapeshellcmd多字节编码漏洞解析及延伸

command injection(命令注入)

标签:

原文地址:http://www.cnblogs.com/huminiceblog/p/4832820.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!