如何利用 web 项目中的漏洞使用硬编码加密密钥?

问题描述

大多数安全指南都说使用硬编码加密密钥是危险的,因为如果代码中的加密密钥泄露给黑客,黑客可以读取使用加密算法(例如 AES256)的编码数据 所以指南说开发人员必须在源代码之外存储加密密钥。 (如下图)

enter image description here

但是,我想知道在源代码之外存储加密密钥是否安全? 让我们假设密钥泄露给黑客,这意味着黑客已经获得了整个项目的源代码,因为没有其他方法可以知道源代码中的密钥。 因此,尽管开发人员将密钥存储在外部源代码中,但它是危险的

所以我的问题是 在 Web 项目中,除了获取整个项目源代码的方式外,还有什么方法可以知道源代码中存储的加密密钥吗?

解决方法

在网络项目中,假设我理解您的意思,那么您的所有代码都是私有的。你只输出你告诉你的服务器输出的东西,源代码是不可访问的......除非有人真的不知道他们在做什么。只要确保使用 HTTPS 来保护您的客户端,否则整个万维网也会发现。

使用反汇编程序,您可以在任何应用程序中获取大部分独特的字符串。文件也是,我所知道的最好的。证书固定听起来很接近您所谈论的内容,我修改了 Snapchat APK 以接受我的证书颁发机构,以便我可以对其执行 MITM。仅仅信任我手机上的 CA 是不够的,因为该应用程序有一个不太容易被破解的安全功能。只有在 a.) 用户想要解密他们自己的数据,或者 b.) 有人方式过多地访问他们的手机时,它才真正起作用。

这可能稍微超出了范围,但是保护服务器端的系统功能免受客户端滥用的一个好方法是为他们编写 API 以精确控制他们的输入。仅供参考。