c - 为什么在 linux 编程中使用 system() 不好?

标签 c linux security

<分区>

Possible Duplicate:
Issuing system commands in Linux from C, C++

我在一些文章中看到在linux编程中使用system()调用是不好的,我想知道真正的原因是什么?它应该消耗更多的内存和更多的 CPU。除了这些还有什么原因?

例如,如果我键入 system("echo 1 > file"); 而不是使用 fopen(), fwrite() 黑客可以在我的程序中做什么程序/linux系统?我看到 system() 由于安全问题不建议。但是一个人如何仅仅因为使用 system() 调用就可以破解 linux 系统呢?如果有人能明确地解释使用 system() 会导致什么问题,我会很高兴。

最佳答案

使用 system("echo 1 > file"); 从字面上看并不存在安全风险,只是在您不需要的情况下不必要地执行另一个进程。

当您以编程方式构建字符串然后将其与 system() 一起使用时,风险就来了。那么你就有Shell Command Injection的风险,您认为您正在构建一个命令,但恶意用户通过为您提供精心设计的输入来破坏您的程序,这些输入会导致您的命令执行您没有预料到的事情。

关于c - 为什么在 linux 编程中使用 system() 不好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11395633/

相关文章:

c - 了解 C 中的线程

c - linux 系统停止

java - Web 应用程序安全架构

linux - 是否有一个内核模块可以准确地返回简单的 'ifconfig' 的作用?

java - 如何在 java 中读取 rsa 公钥文件?

java - JavaFX Web Start 应用程序中的自定义 SecureClassLoader 和权限

c - 如何在C语言中正确使用execvpe()?

c - 如何使用一个或多个参数从 bash 脚本运行 C 程序?

c - ERANGE 和 EOVERFLOW 之间的语义区别是什么?

linux - nasm gcc 命令错误,子程序作为单独的文件