首页 > 解决方案 > 是否有任何特殊输入可以破坏 Python 3 中的 input() 函数?

问题描述

假设我正在制作一个 cat 程序,我打算使用 input() 获取用户的输入,将其存储为字符串以供以后使用,然后输出字符串(为简单起见,假设它只是打印它)。

用户是否可以输入任何内容会使我的程序无法正确存储字符串?我已经测试过特殊字符,\n但它们工作正常 - 是否有任何非常晦涩的字符可能会以某种方式破坏我的程序?

这是我的代码的一个高度简化的版本,它的行为方式应该与我的非简化代码相同:

a = input()
print(a)

标签: pythoninputsanitization

解决方案


没有办法通过输入来破坏代码,输入函数只存储用户所说的内容。无论您输入的是字符串、unicode 还是其他任何内容,结果都将始终相同。但是,如果变量被赋予权力,如下例所示:

import os

a = input()
os.system(a)

然后变量可以访问命令行。如果您不写入对 shell 的访问权限,则该变量无能为力。


推荐阅读