在C中定义值是安全问题吗?

在C中定义值是安全问题吗?,c,security,c-preprocessor,C,Security,C Preprocessor,如果我有一个我使用的程序: #define SECRETNUMBER "1234567890" 这是否是一个潜在的安全问题/漏洞 我有一段带有define语句的代码,我觉得很自然,因为这些信息只是在顶部定义的,没有加密或其他任何东西,这可能会带来安全风险。我只是想知道确切的原因是什么以及如何利用它?不,它不安全,在使用宏的任何地方,它都会被替换为普通(可读)形式。要使数据安全,需要以某种方式对其进行加密,以便在不知道解密密钥的情况下无法读取数据。显然,它不安全,因为它在代码中可见。让我补充一下

如果我有一个我使用的程序:

#define SECRETNUMBER "1234567890"
这是否是一个潜在的安全问题/漏洞


我有一段带有define语句的代码,我觉得很自然,因为这些信息只是在顶部定义的,没有加密或其他任何东西,这可能会带来安全风险。我只是想知道确切的原因是什么以及如何利用它?

不,它不安全,在使用宏的任何地方,它都会被替换为普通(可读)形式。要使数据安全,需要以某种方式对其进行加密,以便在不知道解密密钥的情况下无法读取数据。

显然,它不安全,因为它在代码中可见。让我补充一下,一旦在C预处理器中添加计算,就会产生可能影响安全性的副作用。我建议你把这个秘密号码给我这样即使它被泄露了

通过生成一段随机数据来创建salt。 把盐涂在秘密号码上 生成salt密码的哈希。
将密码、散列和盐存储在数据存储中

你说的“私密”和“安全”是什么意思?你的程序将如何处理这个“秘密号码”?你想防范什么样的威胁?这甚至不是一个变量。。。这是一个宏观问题,你的问题甚至没有错。不,没有错。你问的是“安全”,而不是“安全”,这远远不是问题所在。“安全”比你想象的要困难得多,解释你的情况betterAs其他人已经指出,代码行本身并没有任何作用,因为它只是一个宏。但我想你是在问是否可以从最终的二进制文件中提取字符串文本。答案是可以的。而且也很容易。这可能是相关的:这就引出了一个问题:如何确保加密密钥的安全?不将其存储在任何您无法实际控制的设备上。如果你的加密密钥内置在你的应用程序中,并且可以在没有来自用户或服务器的数据的情况下使用,那么这是不安全的。@zaph如果我们正在指定一个解决方案,它将询问这个问题。但我们不是。我们用一个非常明确的答案回答了一个非常狭窄的问题。