如何清理Erlang输入?

sam*_*moz 2 io erlang sanitization

我今天正在玩erlang shell并注意到我可以进行命令注射,如下所示:

io:get_chars("Cmd> ", 3).
Cmd> Dud List=[3,4,5]. io:get_line("I just took over your shell!").
Run Code Online (Sandbox Code Playgroud)

有没有办法清理get_chars函数的输入,所以这是不可能的?

小智 5

你并没有真正做命令注射. io:get_chars("Cmd> ", 3).简单地完成它的工作:从输入流中读取3个字符.在这些之后输入的所有内容都由erlang shell作为普通read-eval-print循环的一部分进行处理.