| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 461 人关注过本帖
标题:用C语言写的程序不安全
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
结帖率:100%
收藏
 问题点数:0 回复次数:4 
用C语言写的程序不安全
用C语言写的程序不安全2014-4-14 11:38:04 出处:外刊IT评论                     
关于C语言内存管理薄弱的问题几年前我们就讨论过。有人试图反驳,说现代各种操作系统或runtime平台的进步,对内存管理的风险提供了各种保护,比如地址空间随机化,还有各种诸如Valgrind这样的工具可以发现内存访问bug,大大削弱危险程度。我十分推荐大家重新阅读一下那次讨论。
我的观点——当时和现在——都是C语言不适合用来写安全性要求高的程序,任何缺乏内存检查机制的编程语言都不适合。很简单,就是不适合。它们应该仅限于用来写一些小的核心系统,最好是小到可以用一些常规的方法(被证明的方法)进行检查,所有其它的,包括全部应用逻辑,都应该用受控代码实现(例如C#,Java或其它的,我没有偏向)。

心脏出血就是这种缺乏边界检查造成的结果的另一个例子。它无法被Valgrind这样的工具检查出,因为它不是普通的被触发的动作——它需要是一种恶意的行为或是一种足够智能的测试协议才能发现(很难很难)。
事实上,没有哪个程序员能够聪明到可以写出完全避免心脏出血这样的bug的程序。毕竟,程序员的学习和编码关注的是他们的程序的逻辑。在没有边界检查机制的编程语言里,逻辑可能会走错路,因为计算机可以访问和执行任意内存内容,这些内容是和你的程序里的代码和变量是没关系的。所有没有边界检查的编程语言将计算机的多个维度暴露给程序,如果你觉得自己比OpenSSL开发团队强、能很好的处理这种情况,那是自欺欺人。
我们无法在软件中避免bug的存在,但我们可以堵住这些看起来无穷无尽的bug的源头。因为它,很早之前我们的互联网就遭受了Morris蠕虫病毒的危害。现在,2年的时间里,世界70%的互联网流量都暴露无疑,代价惨重。如果不堵住这源头,以后会让我们损失更多。
搜索更多相关主题的帖子: 编程语言 C语言 安全性 操作系统 
2014-04-19 17:38
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11783
专家分:43421
注 册:2006-5-13
收藏
得分:0 
不懂安全,任人宰割。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2014-04-19 19:40
yantietuo
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-5-7
收藏
得分:0 
人的问题
2014-05-07 17:44
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
安全是高手的事
2014-05-07 17:57
雯霖
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:湖南某个角落
等 级:贵宾
威 望:13
帖 子:1504
专家分:2629
注 册:2007-4-6
收藏
得分:0 
高手

没有留不下的城市,只有回不去的过往。
2014-05-08 11:56
快速回复:用C语言写的程序不安全
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017889 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved