[英]How Can I Make Args On Telegram Python Bot That Filters A Words?
我想制作可以过滤 Args 的机器人
示例:/ping example.com{IFS};
我想阻止 {IFS};
如果有人用它运行,机器人将不会响应。
请帮我
if sender in authorized_senders: args=text.split() command = args[0] if command == '/ping': host = str(args[1]) output=os.popen("ping -c1 "+host).read() bot.sendMessage(chat_id, output)
不要将用户输入放入 shell 命令( /ping example.com; cat /etc/passwd; rm -rf *
也会很糟糕)。 subprocess
模块允许您直接运行像ping
这样的程序,您仍然必须非常小心这些程序将如何解释它们的 arguments。 --
至少会阻止 arguments 被解释为许多程序的选项。
这是一个更安全的开始:
output = subprocess.check_output(["ping", "-c1", "--", host])
无论如何验证host
的格式也是一个好主意,例如使用正则表达式。
if not re.fullmatch(r"[\w-]+(\.[\w-]+)*", output, re.ASCII): # don't run the command
(那个是用于 ASCII 字母数字或用点分隔的连字符,不包括纯 IPv6 地址,请注意。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.