python - 在 Python 中用户提供的字符串上运行 .format() 是否安全/安全?
问题描述
场景:最终用户(不受信任)提供了一个字符串,例如"Hello, {name}!"
. 在服务器上,我想对用户提供的字符串进行字符串替换,格式为my_string.format(name="Homer")
. Python 中的字符串格式化可以做很多事情,所以我想知道format()
在不受信任的字符串上运行方法是否存在安全问题。是否可以提供一个字符串值,当使用 Python 的字符串替换时,会改变字符串内容本身之外的数据?
解决方案
字符串格式化是安全的,它没有副作用。它不会更改该字符串之外的任何内容。
它仍然可能是一个安全问题,具体取决于您稍后对该字符串执行的操作。最明显的例子是对 SQL 语句使用字符串格式;这是非常不安全的。
推荐阅读
- eclipse - 当我运行我的项目时,这个运行时错误是什么?
- testing - 我如何安装 Spectron 并开始编写脚本?
- maven - 没有 settings.xml 的声纳 Maven 插件
- facebook - 如何在 facebook 分析服务器到服务器中处理用户
- javascript - 如何将 jQuery UI 所有选定范围(不仅是最小值和最大值)加载到数组中
- azure - Hive Table 迁移到不同的环境
- ruby-on-rails - 如何根据参数验证 Rails 模型?
- ssh - 快照恢复后,Google Cloud VM 上的连接被拒绝
- linux - 如果未评估条件以向用户显示帮助信息,则为 Shell 脚本
- python - “DbgCommand()”也能得到超链接的结果吗?