用英语以外的语言对客户端-服务器系统进行编程是否更安全?

信息安全 Web应用程序 休息
2021-08-24 16:41:42

我正在开发一个通过 REST 在前端(JavaScript)和后端(Java/Spring)之间进行通信的系统,并且弹出了这个问题。

用英语以外的语言命名变量、URL 等是否会使这个系统更安全?

我想它可能是因为,因为最重要的编程语言是英语,所以大多数程序员可能至少知道一点。用另一种语言命名我们的东西可能会使黑客攻击更加困难,因为攻击者将更难理解什么意思和做什么。

我在 Google 上找不到结果,因为一起“编程”一种“语言”使得无法找到关于“语言”其他含义的结果。

4个回答

从技术上讲,是的。但:

  • 这将是默默无闻的安全,这是一个坏主意
  • 它不会增强您对产品的信心
  • 很容易弄清楚什么做什么,只需要一点时间
  • 谷歌翻译,你可以用无意义的名字,它仍然没有多大帮助
  • 这将使维护变得更加困难
  • 这将使审计非常困难,因为审计员可能不懂语言

考虑到所有因素,它可能永远不值得。

它不会明显更安全。逆向工程师经常被迫使用没有任何原始名称完整的系统(生产软件经常去除符号名称),因此他们习惯于处理由计算机生成的名称。取自 Wikipedia 的一个示例,它是一种常见的反编译 C 代码片段:

struct T1 *ebx;
struct T1 {
    int v0004;
    int v0008;
    int v000C;
};
ebx->v000C -= ebx->v0004 + ebx->v0008;

习惯于使用这种表示的人不会被变量的使用所愚弄,并且这些变量被赋予了不相关的名称。这不是特定于编译代码,C 的使用只是一个示例。逆向工程师通常习惯于理解不直观的代码。无论您使用的是 JavaScript、Java 还是 C,都无关紧要。它们是否只分析与 API 本身的通信无关紧要。逆向工程师不会被随机或不相关的变量或函数名称所愚弄。

不是真的 - 所有的内置函数仍然是英文的,所以不需要花费太多额外的精力来计算你的变量将代表什么。它可能会稍微减慢某人的速度,但考虑到人们仍然设法在整个地方使用单个字符变量对代码进行逆向工程,或者已经通过混淆器运行,交换用于变量和函数的语言只是意味着进行查找替换一旦你弄清楚了你的变量之一的用途,然后重复,直到你有足够的理解。

这是通过默默无闻的安全性,并将延迟专门的攻击者整整五分钟。

如果您想迷惑攻击者,将事物命名为相反或无关的事物会产生相同的效果。所以你的“创建用户”函数可以命名为“BakeCake”。现在您可以自己回答这给了您多少安全性。实际上,这会安全,因为它不能通过简单地使用字典来解决。

是的,一开始它会让人困惑,但是看一下正在运行的系统,一切都会立即变得一清二楚。