Crystal会存储任何敏感信息吗?

Vla*_*ust 4 crystal-lang

如果开发人员编译Crystal程序,二进制文件将存储哪些元数据以及如何删除任何敏感信息?敏感是指设备标识符,本地IP地址或其他任何内容.

Fau*_*lar 7

我知道Crystal使用时存储基本的调试信息:

crystal build myprogram.cr
Run Code Online (Sandbox Code Playgroud)

然后你可以使用--debugflag来存储所有的调试信息(可信的敏感信息作为源代码):

crystal build --debug myprogram.cr
Run Code Online (Sandbox Code Playgroud)

要避免调试信息使用--no-debug标志:

crystal build --no-debug myprogram.cr
Run Code Online (Sandbox Code Playgroud)

并优化和混淆二进制使用--release标志:

crystal build --release --no-debug myprogram.cr
Run Code Online (Sandbox Code Playgroud)

据我所知,编译语言可以在使用调试标志进行编译时存储敏感信息.敏感信息通常是嵌入生成的二进制文件的源代码.

您可以使用objdump -s --section .comment myprogram.bin以下内容查看二进制元数据:

.stdin:     file format elf64-x86-64

Contents of section .comment:
 0000 4743433a 2028474e 55292036 2e312e31  GCC: (GNU) 6.1.1
 0010 20323031 36303830 32004743 433a2028   20160802.GCC: (
 0020 474e5529 20362e33 2e312032 30313730  GNU) 6.3.1 20170
 0030 31303900 4743433a 2028474e 55292034  109.GCC: (GNU) 4
 0040 2e372e32 20323031 32313031 35202852  .7.2 20121015 (R
 0050 65642048 61742034 2e372e32 2d352900  ed Hat 4.7.2-5).
Run Code Online (Sandbox Code Playgroud)