使用键盘输入从模块调用函数 - “安全风险”?

时间:2017-03-19 19:36:30

标签: python pyserial

我目前正试图与串口设备'谈话',我知道我要发送什么,但不知道它意味着什么。我想通过将每个命令作为函数调用来使用反复试验并等待响应。每个命令都定义为

def Testcommand1():
    if serial.isOpen() == True:
        serial.write(b'\x1d\x10\xff')
        print('Testcommand1 to do some specific stuff sent, awaiting response.')
    else:
        print('ERROR: Serial port is closed')

以下几行(我不在此处)告诉我的电脑听取回复。我正在寻找在命令之间进行更改的最简单方法,以便能够尽可能多地进行通话并设置命令树。我想通过键盘输入,使用

来做到这一点
  

输入(“输入功能/命令名称:”)

然而,在我试图阅读的大部分页面上,每个人都说“是的,这是可能的,但存在安全风险,最好避免它!”。这一切都很好,但我想知道:为什么这是一个风险?我认为通过使用

简单地限制和控制可能的输入可以最大限度地降低风险
  

来自命令文件导入功能

以精确的方式?

1 个答案:

答案 0 :(得分:0)

您应该验证该命令是否是您要允许的特定命令列表中的命令。当您eval用户传入的内容时,就会出现安全风险 当然,如果允许的命令可以执行对您的系统有害的事情,那么这也是一种风险。