【问题标题】:Is there any special input that can break the input() function in Python 3?是否有任何特殊输入可以破坏 Python 3 中的 input() 函数?
【发布时间】:2020-10-21 03:29:51
【问题描述】:

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

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

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

a = input()
print(a)

【问题讨论】:

  • 我唯一能想到的潜在问题是\0 (NULL)
  • @jordanm 我不认为 Python 将字符串存储为 C 字符串,所以 null 不是问题。

标签: python input sanitization


【解决方案1】:

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

import os

a = input()
os.system(a)

然后变量可以访问命令行。如果您不写入对 shell 的访问权限,则该变量无法执行任何操作。

【讨论】:

    猜你喜欢
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 2015-02-12
    相关资源
    最近更新 更多