首页 > 解决方案 > 在 Python 中用户提供的字符串上运行 .format() 是否安全/安全?

问题描述

场景:最终用户(不受信任)提供了一个字符串,例如"Hello, {name}!". 在服务器上,我想对用户提供的字符串进行字符串替换,格式为my_string.format(name="Homer"). Python 中的字符串格式化可以做很多事情,所以我想知道format()在不受信任的字符串上运行方法是否存在安全问题。是否可以提供一个字符串值,当使用 Python 的字符串替换时,会改变字符串内容本身之外的数据?

标签: pythonsecurity

解决方案


字符串格式化是安全的,它没有副作用。它不会更改该字符串之外的任何内容。

它仍然可能是一个安全问题,具体取决于您稍后对该字符串执行的操作。最明显的例子是对 SQL 语句使用字符串格式;这是非常不安全的。


推荐阅读