繁体   English   中英

如何在过滤单词的 Telegram Python Bot 上制作 Args?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM