在使用Nginx HttpLuaModule时,lua源文件可以进行模糊化/加密吗?如果可以,怎么做?

我正在使用 Lua 为后端服务创建自定义身份验证层。Nginx 已经编译了 Lua 模块和 LuaJIT,它正常工作。我想对我在这些 Lua 文件中提供的令牌进行一些加密,并希望没有人阅读明文源文件。这些 Lua 源文件可以编译成二进制文件,或以某种方式混淆/加密,以使 Nginx 的 access_by_lua_file 指令仍能够加载这些已编译文件吗?我知道这不是一个完全可靠的方法,但比明文还要好。

点赞
用户4402825
用户4402825

Lua字符串即使在没有调试信息的情况下也全部存在于字节码中。查看存储在代码中的字符串完全不需要动机

$ luajit -be 'print("hello world")' hello.out
$ luajit hello.out
hello world
$ xxd hello.out
0000000: 1b4c 4a01 0229 0200 0200 0200 0434 0000  .LJ..).......4..
0000010: 0025 0101 003e 0002 0147 0001 0010 6865  .%...>...G....he
0000020: 6c6c 6f20 776f 726c 640a 7072 696e 7400  llo world.print.
$ luajit -bl hello.out
-- BYTECODE -- hello.out:0-0
0001    GGET     0   0      ; "print"
0002    KSTR     1   1      ; "hello world"
0003    CALL     0   1   2
0004    RET0     0   1

如果您的计划是将加密令牌隐藏在字节码内部,我建议您首先制定一种可逆的方法来使用源代码的模糊版本中存储的它们(例如,对它们进行字符重排,进行算术处理等)。

2015-02-25 05:12:25