当前位置:  开发笔记 > 程序员 > 正文

Secure C和大学 - 接受过缓冲区溢出培训

如何解决《SecureC和大学-接受过缓冲区溢出培训》经验,为你挑选了1个好方法。

我最近在C完成了大学课程.所以我当然缺乏经验.

一些大学倾向于教他们的学生安全编程,或至少一些元素.还有,即使视频(摘自这里).

在C中,复制字符串,据我所知 - strcpy或string.h函数.如何在日常编程中安全地使用它?你有一些函数,它们处理分配以防止缓冲区溢出?有C的CERT安全编码标准.它提供示例和合规解决方案:

int main(int argc, char *argv[]) {
  /* ... */
  char prog_name[128];
  strcpy(prog_name, argv[0]);
  /* ... */
}

他们的替代方案是:

int main(int argc, char *argv[]) {
  /* ... */
  char *prog_name = (char *)malloc(strlen(argv[0])+1);
  if (prog_name != NULL) {
    strcpy(prog_name, argv[0]);
  }
  else {
    /* Couldn't get the memory - recover */
  }
  /* ... */
}

从这里开始,第二个例子.

但据我所知,这更具挑战性,更多代码,更多工作.为什么没有人改变图书馆本身?或者至少为什么没有人提供安全的替代库或功能,以正确的方式处理这个?

感谢阅读,愿



1> sth..:

Posix函数(几乎在每个系统上都可用)是strdup().strcpy()如果您不想分配新内存并且已经有一个想要使用的缓冲区,则会使用它,但是您可以更好地了解缓冲区的大小以及字符串是否适合它.如果您不知道字符串是否适合,那么strncpy()只需复制给定数量的字符.因此,您可以将复制的数量限制为缓冲区大小.

除此之外,还有许多sting库以不同的方式管理字符串大小.

并且因为你标记了它C++:std::string有为你做的所有内存管理,并没有给你这些问题.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有