场景:最终用户(不受信任)提供了一个字符串,例如"Hello, {name}!". 在服务器上,我想以my_string.format(name="Homer"). 在 Python 中,您可以使用字符串格式化执行很多操作,因此我想知道在format()不受信任的字符串上运行方法是否存在安全问题。是否可以提供一个字符串值,当使用 Python 的字符串替换时,该值会更改字符串内容本身之外的数据?
字符串格式化是安全的,不会产生副作用。它不会改变该字符串之外的任何内容。
它仍然可能是一个安全问题,具体取决于您稍后对该字符串的处理方式。最明显的例子是对 SQL 语句使用字符串格式;这是非常不安全的。