.net - 将不受信任的格式字符串传递给 string.Format 是否安全?

标签 .net string-formatting

  • 将用户提供的(不受信任的)格式字符串传递给 string.Format 是否存在安全隐患? ?
  • 这会导致意外的代码执行吗?它会导致无限的 CPU 或内存消耗吗?

  • 请假设以下是不受信任的输入:
  • 格式字符串
  • 所有参数(假设它们是原始类型,如整数、字符串、日期时间。当然没有用户提供的类型。)
  • 文化

  • 抛出的异常不是问题,因为这很容易处理。

    最佳答案

    可以使用相当小的格式字符串生成很长的输出。这可能会导致性能问题,甚至可能导致内存不足错误。

    例如 string.Format("{0,9999999}",0)产生一个消耗 20MB RAM 的字符串。您可以重复该模式以进一步增加输出大小。

    关于.net - 将不受信任的格式字符串传递给 string.Format 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25204385/

    相关文章:

    delphi - 格式和指针/十六进制值(内存覆盖)

    c# - 如何从 ASP.NET MVC 3 设置 HTTP 状态代码?

    c# - 如何在控制台应用程序中成功运行 Hangfire MemoryStorage 作业?

    python - 我可以在 python 中重复字符串格式描述符吗?

    python - 理解字符串格式中的 Python %g,实现 Java String.format 行为

    c - gcc std=gnu90 的 size_t 格式警告

    c# - int.ToString 像 DateTime 的 HH 格式

    .net - FxCop自定义规则-检查Winform控件属性

    c# - Cecil - 获取定义的属性属性

    C 语言 - 如何确保在读取多个输入文件时保持恒定格式?