作者dharma (达)
看板C_and_CPP
标题[问题] 写大量没有安全漏洞的C代码很困难
时间Sun Jul 5 17:11:51 2020
丰富的经验告诉我们,要编写大量没有安全漏洞的C代码是非常困难的,几乎是不可能的
。”
https://www.chainnews.com/zh-hant/articles/087238150806.htm
请问上述情形
在使用现代先进的IDE
情况仍然是这样吗?
自己对C语言只有很粗浅的练习过教学题目而已
thanks
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 107.161.88.23 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1593940314.A.1E3.html
1F:→ nh60211as: 对 07/05 18:12
2F:→ ddavid: 是说这位在板上问问题都问了七年了还说是只做过练习题的新 07/05 20:29
3F:→ ddavid: 手……XD 07/05 20:29
业余好玩啊
还蛮喜欢看程式设计的新闻和讨论文
学业和工作上没有程式需求
4F:→ galic: 云编程师 07/05 20:53
5F:推 lc85301: 我都改写 rust (欸 07/05 22:53
6F:推 atrix: 珍惜生命,远离C/C++ 07/05 23:31
7F:→ wei115: 是有形式化验证拉......不过我也不懂 07/06 00:58
8F:推 CoNsTaR: rust 07/06 04:20
9F:推 TitanEric: rust学起来 07/06 09:46
10F:推 KanzakiHAria: 这是你的问题 选C的理由从来都不是安全性 07/06 13:26
11F:→ KanzakiHAria: 要漏洞少就应该要选rust 07/06 13:26
※ 编辑: dharma (107.161.88.23 美国), 07/06/2020 17:00:10
12F:→ loveme00835: 你会发现在这个板问问题得到的答案都是改写别的语言 07/06 21:39
13F:→ loveme00835: 确保安全性不从语言层面做的话就得要写的人下手, 可 07/06 21:49
14F:→ loveme00835: 以参考 CERT/MISRA, 只是在工具使用还有人员训练做 t 07/06 21:49
15F:→ loveme00835: rade-off 而已 07/06 21:49
16F:→ loveme00835: 後来你会发现与其花钱买商用软体检查漏洞, 叫员工读 07/06 21:55
17F:→ loveme00835: 熟语言标准, 遵守某种写码规范, 总总措施还不如直接 07/06 21:56
18F:→ loveme00835: 改用不容易犯错的语言成本来得低廉 07/06 21:56
19F:推 Killercat: C不可能啦 void*根本是漏洞制造机 C++还有点机会 07/07 08:35
20F:推 CoNsTaR: 听说之前有人把一个已经广泛使用超过十年的 c lib(加密 07/07 23:29
21F:→ CoNsTaR: 用的 lib),用 Agda 重写(要证明语意想等性的),结果 07/07 23:29
22F:→ CoNsTaR: 还是发现几十个 bug... 07/07 23:29
23F:→ final01: 写出有漏洞的程式是你的问题还是语言的问题?? 07/11 17:11
24F:→ final01: 这是你该搞清楚的 07/11 17:12
25F:推 CoNsTaR: 应该都有问题吧 楼上 07/11 21:29
26F:推 CoNsTaR: 这就像问走路跌倒是你的问题还是鞋子的问题一样 07/11 21:31
27F:→ CoNsTaR: 非得只能是其中一边的问题吗? 07/11 21:31
28F:→ loveme00835: 以专案管理的角度来说:决定要穿这鞋子也是你的问题 07/11 22:28
29F:→ loveme00835: 事实就是虽然成为程式语言, 但会真的当语言学习的人 07/11 22:34
30F:→ loveme00835: 并不多, 所以写出来的东西都像小朋友用积木兜出来的, 07/11 22:34
31F:→ loveme00835: 看写法就知道一定会出 bug 07/11 22:34
32F:推 CoNsTaR: 楼上这麽说意思是对於所有问题,一定可以找到至少一种完 07/13 07:15
33F:→ CoNsTaR: 全合适的语言罗? 07/13 07:15
34F:推 CoNsTaR: 在我看来反而是因为都当成语言来学习「能沟通(用)就好 07/13 07:31
35F:→ CoNsTaR: 」,才会这样 07/13 07:31
36F:→ CoNsTaR: 语言(有限符号的集合)只是一个程式语言的很小一部分, 07/13 07:31
37F:→ CoNsTaR: 只是那个形式系统的长相而已 07/13 07:31
38F:→ loveme00835: 语法->语意->语用, 只到第一层, 对第二层一知半解, 07/13 09:29
39F:→ loveme00835: 这就是你说的「能沟通就好」. 不过因为语言的复杂度, 07/13 09:29
40F:→ loveme00835: 这个议题已经和一般开发者没什麽关系了 07/13 09:29
41F:推 CoNsTaR: ... 身为开发者不懂自己写的东西的意思,会比专案管理选 07/13 11:20
42F:→ CoNsTaR: 错鞋还要好吗,我是不太懂啦 07/13 11:20
43F:→ loveme00835: 我的意思是, 问题的核心在於开发者不懂自己在写什麽, 07/13 12:01
44F:→ loveme00835: 而不是有没有选对语言, 选错语言还是可以做对事情, 07/13 12:01
45F:→ loveme00835: 只是付出成本比较高. 所以一开始用语言来评断就是错 07/13 12:01
46F:→ loveme00835: 的立论, 终究是人的问题 07/13 12:01
47F:→ Killercat: 其实technical stack的选择终究是设计师会碰到的问题 07/13 12:54
48F:→ Killercat: 年资成长下,「对於工具的选择」也是技术的一部分了 07/13 12:55
49F:→ Killercat: 套句我刚讲的「void*根本是漏洞制造机」而要避开这漏洞 07/13 12:55
50F:→ Killercat: 就得传入长度,长度又要考虑int够不够?会不会因为pagin 07/13 12:56
51F:→ Killercat: g产生效能问题?得花的精力真的有点多 XD 07/13 12:56
52F:→ Killercat: 前面讲的C没exception该怎麽办?error code?可是这写法 07/13 12:56
53F:→ Killercat: 又好痛苦?还是每个函数都加一个*int进parameter当err? 07/13 12:57
54F:→ Killercat: 如果不是真的在这领域钻很深非要他不可,我是觉得 07/13 12:58
55F:→ Killercat: 技术的选择也是经验的一部分,放下比较好 XD 07/13 12:58
56F:→ Killercat: 我不知道C是不是战斗机,但是路上还有很多交通工具可以 07/13 12:59
57F:→ Killercat: 选择,我并不想开台F-35去小七买个晚餐回来吃 :3 07/13 12:59