rust - 将程序宏代码或堆栈值编译成可执行文件?
问题描述
我正在编写程序宏。假设我有一个宏,可以用它的哈希值替换代码中的每个密码实例。我不希望它在运行时包含在可执行文件或内存中。
编译时使用的代码和堆栈是否添加到二进制文件中?我很确定他们不是,但我找不到明确的答案。
解决方案
一般的问题是“编译环境中的内存是否有可能最终出现在最终的可执行文件中?”。
实际的答案是否定的,特别是与编译器的堆栈帧或在 proc-macro 中使用的内存(在单独的进程中运行)有关。
就安全性而言,答案肯定是肯定的。一方面,编译器不保证它不会在最终的可执行文件中包含其通用环境的一部分,例如,人们对他们的用户名被包含在可执行文件中感到惊讶,因为依赖项会生成引用源的错误消息错误起源的文件 ( error at /home/myusername/foo/src/...
)。其次,编译器无法控制操作系统在做什么,所以它自己的部分行为(同样,关于安全保证)是在那里实现定义的。
因此,如果您绝对必须保证您的令牌不包含在最终的可执行文件中,请在首先调用编译器进程之前对其进行哈希处理。
推荐阅读
- excel - 如何在 VBA 中使用 sql 查询并将数据从一个 Excel 工作表获取到另一个工作表?
- python - Python 脚本和 Tweepy 的 Cron 作业
- excel - MURAL Web Scraping 编译错误 - 项目或库
- sql - sql查询返回事件链
- ruby-on-rails - 在 Rails 中使用一个模型和另一个模型上的两个属性创建连接表
- c# - 编译带有外部cs文件依赖的dll
- itfoxtec-identity-saml2 - 来自 AuthnRequest 的 AssertionConsumerServiceURL 不是来自 Config
- android - Android/iOS 应用商店要求一个简单的 Cordova 应用程序,然后将 Web 视图转发到外部 Javascript 应用程序
- java - 比较两个不同的数据类型对?
- c# - 如何在 AWS CDK PolicyStatement AddAction 方法中嵌套 KeyValue 对?