|
|
1
21
此函数(strcpy)被认为是不安全的,因为没有边界检查,并且可能导致缓冲区溢出。(实际上strcpy因溢出攻击而臭名昭著,所有程序员都会避免它,或者至少应该避免它)。建议使用一个考虑到目标缓冲区大小的安全函数,以避免溢出。你也可以使用strncpy(但要小心!)。代码没有问题,即函数将按您所说的方式运行,但请尝试将大于目标缓冲区的缓冲区作为输入。函数将使目标缓冲区溢出。也检查一下这个 link text |
|
|
2
11
虽然strcpy是一个常见的字符串函数,但它一直是软件中许多错误和安全漏洞的根源(因为缓冲区溢出很容易)。
你有几个选择。
我通常做3。 |
|
|
3
10
既然你在编程C++,正确的解决方案是禁止C风格。
做
使用诸如
|
|
|
4
8
自VC++ 8
你有两个选择:
|
|
|
5
4
您可以启用 secure template overloads . 他们将(如果可能)通过使用模板重载捕获缓冲区来推断缓冲区的长度。在VisualC++中,为什么默认情况下无法启用这一点,这对我来说是个谜。 |
|
|
6
4
|
|
7
2
|
|
|
8
1
如果您已经查看了使用C++纯技术的优点和缺点,而不是担心,因为您知道您的字符串将被零终止,那么您也可以禁用MSVC中的警告,这类事情:
|
|
|
9
-1
使用
Secure Template Overloads
或
define wrapper functions
如果代码是自己编写的,最好将这样的strcpy改为strcpy_s等。 如果模块是从受信任的源导入的,则可以选择忽略警告。
忽略方法1:项目全局作用域:添加安全警告
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |