+
 新版
2020-03-23 11:24
写底层的人也越来越少了,更多的是做商业变现的
2020-03-24 10:19
对,所有人都在赚快钱,务实做技术的少了。
2020-03-17 09:20
不会手动管理内存导致的,用完不释放
2020-03-16 18:34
高质量的c代码不好写,可偏偏c被做为入门语言
2020-03-24 00:21
确实比较简单,易入门,但是要玩的很6就非常难了
2020-03-16 17:14
这就是为啥需要 Rust 的原因。
2020-03-18 17:39
有Rust也无法解决Cybersecurity的疏忽漏洞,比起“缓冲区溢出”严重得多,要不然Java、Python、PHP甚至JS编写的软件也不会上榜了。
2020-04-24 15:34
你说的这个是什么漏洞?
2020-04-24 15:52
可以理解为包含“信息安全”在内的IT安全类别。跨站脚本、SQL被注入、权限设计漏洞等都属于这种类型。
2020-04-24 16:00
嗯,我刚才也查了下,这类本就不是rust所需要解决“高级”漏洞,rust是偏向系统级的,这就不是它被设计用来解决的问题。
但是它是个基础,如果连底层这些都有漏洞,那么无论多没完美的解决这些高级的漏洞,也是徒劳的。
2020-04-24 18:46
所以说,既然Java、Python、PHP、JS这类能够从一开始就解决“底层漏洞”的语言都出现这种“高级”漏洞,显然所谓的“底层漏洞”解决了也一样无法阻止“高级漏洞”的存在。这就是为什么单靠 Rust 也无法解决问题。
2020-04-27 16:48
回复 @久永 : 既然连Java程序员、PHP程序员、Python程序员等人在无法出现缓冲区溢出bug的情况下也会出现疏忽漏洞,这就说明换语言也没用,加强安保意识培训才是正道。
用你的大厦为例子,Java等语言从一开始就在解决了地基问题,尽管解决速度不够快,但还是完成了任务,甚至都不需要Rust的介入就弄好了。
而出现得最多的大厦安全问题,种类几乎都是大门安保漏洞。所以要加强员工的培训。
2020-04-28 10:05
回复 @_Anonymous_ :
同你这个理论推论:因为面向对象是种思想,因此面向对象的语言无用?
而且,用C语言之类的面向过程语言实现面向对象的项目的大有人在。
地基解决地基的问题你,装修解决装修的问题。
不能因为地基没法解决护栏的安全问题就说地基安全设计没用吧?
而且,从原理上说,就不可能有绝对安全的软件系统。
那是不是任何语言在安全设计的方面都是多余和没用了?
2020-04-28 16:05
回复 @久永 : 从那份报告来看,现在出现最多的是Security Issue,不是单纯的memory safe issue。继续用大厦做比喻:不管地基过硬的大厦或是地基可能差的大厦,入口安保总是出现各种疏漏。地基可能差的大厦的员工就算去了地基过硬的大厦,安保问题仍然照样糟糕。一句话:安保问题必须靠安保意识和安保措施去解决,改地基解决不了安保问题。
2020-05-06 20:36
回复 @_Anonymous_ : 如果仍然不相信,那就来个更详细的说法:在地基没啥问题的情况下(Java、Python、Go等)担心地基出事大楼倒塌(缓冲区溢出),还不如加强各处出入口安保措施、提高员工防范意识尽可能地努力阻止犯罪分子(禁止空口令登录、密码密钥不得硬编码不得公开、规范代码编写阻止如SQL注入等各种人为疏忽,最大努力阻止黑客之类的入侵者),后者才是日常漏洞主要组成部分。正如你所说,这些并不是Rust要解决的。结果还是同样的结论,把Rust提上来也没用,必须提高代码编写者的防范意识和相关水平才行。
2020-03-16 11:09
同是原生语言,比起 C++,啥都自己来,自然出错的几率越高。
2020-03-16 10:13
越底层的操作,漏洞越多
2020-03-16 11:58
也不能这样说。应该是越追求效率,漏洞越多。软件本就是处在效率和安全之间的权衡点上。想马儿跑,又不吃草,那得发展硬件。
2020-03-16 09:24
您好,请问缓冲区溢出漏洞是什么意思?溢出不是直接报错吗?
2020-03-16 10:04
得看溢出得好不好,溢出得好就执行注入的代码了
2020-03-16 10:19
程序被加载进内存,然后cpu读取指令开始执行, 执行一条指令,然后继续读取,继续执行,一直会执行下去,直到程序结束。cpu 执行的指令, 从内存读取的, cpu 会按照规则读取一些内存地址的数据, 进行执行。溢出就是, 本来存储程序数据的内存地址, 由于存入超长或超短等等的数据,导致程序数据写入了cpu将要读取指令的内存区域,cpu就执行了篡改过的指令,也就是常说的执行任意代码漏洞。大概原理就是这样
2020-03-16 10:34
又是你,哈哈哈。
缓冲区一般是在栈内申请的数据。
函数内,一个缓存char buf[0x4]; 你却修改了buf[4~8],buf[4~8]是保存返回地址。
而栈一般拥有执行权限。所以,适当的时候,把buf[-0~-max],修改成目标机器码… x86汇编类似
func:
subl 4,%esp
movl %esp,%eax 这里是buf地址
addl 4,%esp
ret //相当于pop %eax jmp %eax
2020-03-16 12:38
您好 您好罗纳尔多
2020-03-17 10:10
大神
2020-03-16 08:58
还不是因为能玩转c的很少了。都在玩java之类有gc的去了。对于底层越来越理解少了
2020-03-16 09:32
gc是科技的进步好不好?90%的软件开发gc不是问题
2020-03-16 10:19
基本都是新手玩c,而且也顺便学仓库用法
回复 @
{{emojiItem.symbol}}
返回顶部
顶部