[问题] 写大量没有安全漏洞的C代码很困难

楼主: dharma (達)   2020-07-05 17:11:51
丰富的经验告诉我们,要编写大量没有安全漏洞的C代码是非常困难的,几乎是不可能的
。”
https://www.chainnews.com/zh-hant/articles/087238150806.htm
请问上述情形
在使用现代先进的IDE
情况仍然是这样吗?
自己对C语言只有很粗浅的练习过教学题目而已
thanks
作者: nh60211as   2020-07-05 18:12:00
作者: ddavid (谎言接线生)   2020-07-05 20:29:00
是说这位在板上问问题都问了七年了还说是只做过练习题的新手……XD
作者: galic (嘎利)   2020-07-05 20:53:00
云编程师
作者: lc85301 (pomelocandy)   2020-07-05 22:53:00
我都改写 rust (欸
作者: atrix (班班)   2020-07-05 23:31:00
珍惜生命,远离C/C++
作者: wei115 (ㄎㄎ)   2020-07-06 00:58:00
是有形式化验证拉......不过我也不懂
作者: CoNsTaR ((const *))   2020-07-06 04:20:00
rust
作者: TitanEric (泰坦)   2020-07-06 09:46:00
rust学起来
作者: KanzakiHAria (神崎・H・アリア)   2020-07-06 13:26:00
这是你的问题 选C的理由从来都不是安全性要漏洞少就应该要选rust
作者: loveme00835 (发箍)   2020-07-06 21:39:00
你会发现在这个板问问题得到的答案都是改写别的语言确保安全性不从语言层面做的话就得要写的人下手, 可以参考 CERT/MISRA, 只是在工具使用还有人员训练做 trade-off 而已后来你会发现与其花钱买商用软件检查漏洞, 叫员工读熟语言标准, 遵守某种写码规范, 总总措施还不如直接改用不容易犯错的语言成本来得低廉
作者: Killercat (杀人猫™)   2020-07-07 08:35:00
C不可能啦 void*根本是漏洞制造机 C++还有点机会
作者: CoNsTaR ((const *))   2020-07-07 23:29:00
听说之前有人把一个已经广泛使用超过十年的 c lib(加密用的 lib),用 Agda 重写(要证明语意想等性的),结果还是发现几十个 bug...
作者: final01 (牛顿运动定律)   2020-07-11 17:11:00
写出有漏洞的程式是你的问题还是语言的问题??这是你该搞清楚的
作者: CoNsTaR ((const *))   2020-07-11 21:29:00
应该都有问题吧 楼上这就像问走路跌倒是你的问题还是鞋子的问题一样非得只能是其中一边的问题吗?
作者: loveme00835 (发箍)   2020-07-11 22:28:00
以专案管理的角度来说:决定要穿这鞋子也是你的问题事实就是虽然成为程式语言, 但会真的当语言学习的人并不多, 所以写出来的东西都像小朋友用积木兜出来的,看写法就知道一定会出 bug
作者: CoNsTaR ((const *))   2020-07-13 07:15:00
楼上这么说意思是对于所有问题,一定可以找到至少一种完全合适的语言囉?在我看来反而是因为都当成语言来学习“能沟通(用)就好”,才会这样语言(有限符号的集合)只是一个程式语言的很小一部分,只是那个形式系统的长相而已
作者: loveme00835 (发箍)   2020-07-13 09:29:00
语法->语意->语用, 只到第一层, 对第二层一知半解,这就是你说的“能沟通就好”. 不过因为语言的复杂度,这个议题已经和一般开发者没什么关系了
作者: CoNsTaR ((const *))   2020-07-13 11:20:00
... 身为开发者不懂自己写的东西的意思,会比专案管理选错鞋还要好吗,我是不太懂啦
作者: loveme00835 (发箍)   2020-07-13 12:01:00
我的意思是, 问题的核心在于开发者不懂自己在写什么,而不是有没有选对语言, 选错语言还是可以做对事情,只是付出成本比较高. 所以一开始用语言来评断就是错的立论, 终究是人的问题
作者: Killercat (杀人猫™)   2020-07-13 12:54:00
其实technical stack的选择终究是设计师会碰到的问题年资成长下,“对于工具的选择”也是技术的一部分了套句我刚讲的“void*根本是漏洞制造机”而要避开这漏洞就得传入长度,长度又要考虑int够不够?会不会因为paging产生效能问题?得花的精力真的有点多 XD前面讲的C没exception该怎么办?error code?可是这写法又好痛苦?还是每个函数都加一个*int进parameter当err?如果不是真的在这领域钻很深非要他不可,我是觉得技术的选择也是经验的一部分,放下比较好 XD我不知道C是不是战斗机,但是路上还有很多交通工具可以选择,我并不想开台F-35去小七买个晚餐回来吃 :3

Links booklink

Contact Us: admin [ a t ] ucptt.com