标签: .net string-formatting
将用户提供的(不受信任的)格式字符串传递给string.Format是否存在安全隐患?
string.Format
这会导致意外的代码执行吗?它会导致无限的CPU或内存消耗吗?
请假设以下是不受信任的输入:
抛出异常不是问题,因为这很容易处理。
答案 0 :(得分:5)
可以使用相当小的格式字符串生成非常长的输出。这可能会导致性能问题,甚至可能导致内存不足错误。
例如string.Format("{0,9999999}",0)生成一个消耗20MB RAM的字符串。您可以重复该模式以进一步增加输出大小。
string.Format("{0,9999999}",0)