![]() |
1
9
Posix功能(几乎在每个系统上都可用)是
除此之外,还有许多以不同方式管理字符串大小的字符串库。
既然你把它标记为C++:
|
![]() |
2
2
这个 字母 l(英语字母表中的第十二个字母) (strlcpy,strlcat)函数来自 OpenBSD 通常比 n 函数,它们既更快又更容易安全地使用,但它们是非标准的。然而,它们是BSD许可的,所以你可以在任何程序中包含一个已知的良好实现,这样你就可以跨平台和安全。 对于Windows,如果你不关心可移植性,你可以使用*_s函数。 |
![]() |
3
2
使用
有
|
![]() |
4
1
如果我理解正确的话,你真正的问题是为什么API函数没有变得更安全。 一个原因是C库是遗留的(现在更改它为时已晚)。 然而,主要原因是该库的设计是极简主义的,因此它只做了最少的工作,用户有责任确保它被正确调用。如果它进行了过多的检查,那么每次调用时都会支付一笔费用,即使用户可以出于其他原因保证不会出现问题。这在许多API中非常常见。 话虽如此,有足够多的库提供更安全的替代方案,它们只是不是标准库的一部分。此外,许多从事高级工作的人都使用C++,C++有许多标准类库。 |
![]() |
5
0
事实上,微软确实提供了CRT功能的安全替代方案。不过,我认识的每个人都讨厌它们,并禁用了不应该使用旧函数的警告。如果你想要安全的东西,也许你应该使用C++。然后是STL字符串或类似Qt的东西。 好吧,或者你去像这样的平台。NET或Java,通常不会出现这些问题(您的应用程序可能会崩溃,但无法通过缓冲区溢出将代码注入到应用程序中)。 编辑: 启用数据执行保护/NX(Vista和.NET的默认设置)后,这对传统平台来说也应该不是问题。 |
![]() |
6
0
|
![]() |
7
0
也许你会找到有用的阅读答案 this question |
![]() |
Michael · 某些Windows客户端上的命名管道安全问题 1 年前 |
![]() |
adamency · 是否可以从Go二进制文件的源代码中检索字符串? 1 年前 |
![]() |
AlboSimo · PayPal Api密钥安全 1 年前 |