我是一名毕业生,希望尽快找到工作,但我有一个关于代码安全性的问题。
在 Java 中,没有越界数组,也没有指针,这表明 Java 比 C 更安全。在 C 中,这些越界数组可能导致堆栈损坏或缓冲区溢出和悬空指针。在采访中,我可能会被问到“黑客如何利用这些优势?”
我该如何回答这个问题?
欢迎提供示例。
最佳答案
嗯,您可以具体讨论 Heartbleed(那里有大量文档)。
基本上,有一个可以通过网络进行的 API 调用,您的代码将请求通信保持事件状态,通常如下所示:
You: send me "potato", which is 6 chars.
Response: potato
但是,没有检查请求的文本和发送的文本的长度是否对齐,因此您可以执行以下操作:
You: send me "potato", which is 512 chars.
Response potato&&&�#((#(#)%#(((#%)password:1234#(%()#%((#%#(#%)(#)(%)(##()JFJFEOIJF#)J(JF)(#J)(#J#)(J#))J#....
响应计算机将发送马铃薯,加上 506 字节的内容,本质上是该局部变量周围的堆栈,其中几乎可以包含任何内容,包括密码等。
这是一个足够好的例子吗?
关于c - 黑客如何利用数组或指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36708242/