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

时间:2015-02-24 20:17:55

标签: encryption nginx lua luajit

我正在使用Lua为我的后端服务创建自定义身份验证层。 Nginx使用Lua模块和LuaJIT编译。它工作正常。我想对那些我在这些lua文件中提供服务的令牌进行一些加密,并希望没有人读取纯文本源文件。这些lua源文件是否可以编译成二进制文件或模糊/加密,以便Nginx的access_by_lua_file指令仍能加载这些编译文件?我知道这不是一个完整的证明方法,但比纯文本更好。

1 个答案:

答案 0 :(得分:1)

即使没有调试信息,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

如果您的计划是在字节码中隐藏加密令牌,我建议首先设计一种可逆方法,使用存储在源代码明文中的模糊版本(例如,对字符进行随机播放,对它们执行算术运算)等等......)