| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2355 人关注过本帖
标题:C语言编程中 程序会有什么不安全的因素
只看楼主 加入收藏
q6892070
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2011-10-21
结帖率:0
收藏
 问题点数:0 回复次数:9 
C语言编程中 程序会有什么不安全的因素
给我举例嘛
比如我只知道2个  溢出 和越界  而且概念还比较模糊
给我详细介绍下吧
搜索更多相关主题的帖子: 安全 编程 C语言 而且 
2011-10-30 23:40
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
收藏
得分:0 
野指针,不过这个好像会报错。
内存空间没有释放。这个我只是一知不解。
2011-10-31 00:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
可能产生不安全因素的地方多了,随着你学习的深入和编程经验的累积,你将会发现C是除汇编之外最多不安全陷阱的编程语言。C的强大,在于它把各种细节都交给你去处理,也能允许你用指针之类的粗暴手段硬把安全因素破坏掉而获得本来不应该获得的东西。溢出和越界之类,不过是C程序侵犯到操作系统的保护领域时被踢出而已,如果不侵犯到操作系统的领域,就真能让你为所欲为了。比如向ROM写数据之类,就是用C做的,这也是各种驱动程序向保护式操作系统申请的特权(如果是以前的DOS,写了也就写了,不用跟操作系统打招呼,现在的Windows之类,才要插手不允许程序随便这样做)。也就是说,并非C不能溢出、越界,而是操作系统不允许溢出和越界,安全与不安全,是操作系统判定的,C语言本身无所谓安全性,它根本就不是安全性语言。其他语言自身就不允许出现越界,但C允许,所以它“强大”。

一些所谓的“高手”,像崂山道士一样,以拥有穿墙术为能。穿墙行为本身无所谓好坏,好坏不过在于你是否合法穿墙,在不应该穿墙的地方穿墙,确实是你的本事,但是坏事。身怀穿墙术,是不是那么值得炫耀和追求,见仁见智了。指针技术充满陷阱,是现代编程语言都极力避免的东西,无非是它非常不安全,但就有那么一些人,以精通指针技术为能事,以其为判断高手的标准,不过是这个道理罢了。归根结底,是你学编程想干什么的问题,不打算敲门而入的,当然要苦练穿墙术了。以什么出发点推崇C的强大,是首要问题。如果你学编程不过是希望做个学生管理系统之类,却去苦练指针技术,那是入错门了。

[ 本帖最后由 TonyDeng 于 2011-10-31 03:13 编辑 ]

授人以渔,不授人以鱼。
2011-10-31 02:55
Y_Jo_1
Rank: 4
等 级:业余侠客
帖 子:59
专家分:215
注 册:2011-10-20
收藏
得分:0 
向楼上学习了
2011-10-31 18:40
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 3楼 TonyDeng
不完全同意你的说法,c语言中的指针是精髓,同时陷阱也很多,用好指针是必须的,因为c语言并不算是高级语言,面向操作系统,内存和底层硬件,这些不是高级语言的优势。工作了之后做的嵌入式系统,一个系统里面充满了各种各样的指针,理解不好指针寸步难行,所以我觉得c语言最出彩的地方就是指针,也是因为指针才体现出c语言的优势,个人的一点感悟

总有那身价贱的人给作业贴回复完整的代码
2011-11-01 08:42
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
能在雷区中行走,跟喜欢布雷挑战自己,是两回事。嵌入式不过是与跨平台相对立的概念,固定在某个环境中使用,传统的编程都是这种模式,而指针的那些问题也都是在那个时候就存在的,才会致力于发展各种安全性语言——事实上C++的出现,初衷就是针对C的不安全性而来。看一个程序员的代码,如果发现它经常出现在不是非要用指针不可而惯用指针的情况,那么此人的基本思维就可以定向了,企业用不用这种人,是一种企业文化的体现。物以类聚、人以群分,喜出指针面试题目的,自身也必是这类货。

[ 本帖最后由 TonyDeng 于 2011-11-1 09:48 编辑 ]

授人以渔,不授人以鱼。
2011-11-01 09:23
BlueSky278
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-11-29
收藏
得分:0 
回复 3楼 TonyDeng
有见地.领教了.
2011-11-29 17:58
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
比如:
char str[1024];

下面这两个版本中:
gets(str);
fgets(str, 1024, stdin);

后者就比前者安全~

o(∩∩)Linux & Python 群:187367181
2011-11-29 18:00
danlujie
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-8-14
收藏
得分:0 
请问谁有关于安全编程的考试题,如果有,传我一份可以吗?先多谢大家啦
我QQ邮箱是786290921@
2016-08-14 23:22
danlujie
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-8-14
收藏
得分:0 
回复 9楼 danlujie
急用,再次谢谢各位了
2016-08-14 23:24
快速回复:C语言编程中 程序会有什么不安全的因素
数据加载中...
 
   



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

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