代码问题:格式字符串不是字符串文字[重复]

2024-02-13

可能的重复:
SnowLeopard Xcode 警告:“格式不是字符串文字,也没有格式参数” https://stackoverflow.com/questions/1677824/snowleopard-xcode-warning-format-not-a-string-literal-and-no-format-arguments

我收到这行代码的以下问题。

“格式字符串不是字符串文字(可能不安全)”

NSLog([NSString stringWithFormat:@"%@", entered]);

有什么建议么?


编译器希望我们使用 NSString 常量作为格式字符串(第一个参数NSLog)因为它可以防止可能违反安全性的众所周知的漏洞。例如,您可以按如下方式更改发布的代码以使编译器满意:

NSLog(@"%@", [NSString stringWithFormat:@"%@", entered]);

EDIT

当然,上面的内容可以(并且应该)简单地写成如下:

NSLog(@"%@", entered);

安全漏洞的性质

不受控制的格式字符串[1] 是一种软件漏洞, 1999 年左右发现,可用于安全漏洞。 以前被认为无害的格式字符串漏洞可用于 使程序崩溃或执行有害代码。问题源于 在某些情况下使用未经检查的用户输入作为格式字符串参数 执行格式化的 C 函数,例如printf()。一个恶意的 用户可以使用%s and %x除其他外,格式化令牌以打印数据 来自堆栈或内存中可能的其他位置。一也可以 使用以下命令将任意数据写入任意位置%n格式标记, 哪些命令printf()和类似的函数来写入数量 字节格式化为存储在堆栈上的地址。

典型的漏洞利用 使用这些技术的组合来强制程序覆盖 库函数的地址或堆栈上的返回地址 带有指向某些恶意 shellcode 的指针。填充参数为 格式说明符用于控制输出的字节数和 这%xtoken 用于从堆栈中弹出字节直到开始 已达到格式字符串本身的值。格式字符串的开头 被精心设计为包含该地址%n然后可以格式化令牌 用要执行的恶意代码的地址覆盖。

资料来源:维基百科不受控制的格式字符串 http://en.wikipedia.org/wiki/Uncontrolled_format_string

[1]: http://cwe.mitre.org/data/definitions/134.html http://cwe.mitre.org/data/definitions/134.html“CWE-134:不受控制的格式字符串”。常见弱点枚举。米特雷。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代码问题:格式字符串不是字符串文字[重复] 的相关文章

随机推荐

  • 在 jQueryUI 对话框内的 jqGrid 上正确调用 setGridWidth

    我有一个 jQueryUI 对话框 locDialog 其中有一个 jqGrid grid 在里面 当对话框打开时 最初 但每当打开时都会调用它 我想要 grid调整大小到 locDialog 当我最初执行此操作时 我会在网格内 而不是在对
  • 增加字符串 perl 中所有数字的出现次数

    我想增加字符串 perl 中所有数字的出现次数 例如 如果我的字符串为 str 转到第 34 页并阅读第 3 行 它应该更改为 str 转到第 35 页并阅读第 4 行 我尝试使用 str s d 1 g 但它以字符串形式输出 即 转到页码
  • 获取 Excel 工作表名称并用作宏中的变量

    我正在尝试找到一种方法 将 Excel 工作表名称用作我编写的宏中的变量 每个月我都会处理一本寄给我的工作簿 里面有两张纸 宏的一部分使用 打开文件 界面导航到文件夹并打开文件 文件中的第一张表称为 报告 它是静态的 我所做的就是删除它 因
  • 如何制作一个简单的Python REST服务器和客户端?

    我正在尝试制作尽可能简单的 REST API 服务器和客户端 服务器和客户端都是用 Python 编写并在同一台计算机上运行 从本教程 https blog miguelgrinberg com post designing a restf
  • 如何使用 CGContext 在 UIView 中设置背景颜色?

    我开发了一个应用程序 我想在其中设置 UIView 的背景颜色 该颜色已经在 UIViewController 上设置 代码如下 implementation frmGraphView id initWithFrame CGRect fra
  • VS 2008 设计器和用户控件

    我创建了一个自定义数据网格控件 我将其拖到 Windows 窗体上并设置其属性 如列和全部 并运行该项目 它构建成功 我可以在表单上查看网格控件 现在 如果我尝试在设计器中查看该表单 我会收到以下错误 Object reference no
  • 带有不需要的空间的自定义旋转对话框

    我正在创建一个由自定义微调器启动的自定义对话框 我想做的是自定义微调器调用的对话框 然而 对话框中有一个令人讨厌的空格 我已经尝试了所有资源来修复它 但一无所获 我也关注了这个question https stackoverflow com
  • 如何动态获取系统架构?

    正如标题所说 有没有办法获得c 中的系统架构 Thanks 基于 动态 和 Visual C 我猜你想在 Windows 下的运行时执行此操作 在这种情况下 您可以使用GetSystemInfo http msdn microsoft co
  • Grails:一个数据库和多个应用程序

    我有基于 Grails GORM 的应用程序 一个 Web 服务和一个网站都在不同的端口上运行并共享公共数据库和表 我所做的是为两个具有相同字段和域类名称的应用程序创建域类 例如登记表有userName and password字段 可以通
  • UIImageView触摸事件

    我想在触摸位于 uiview view1 中的名为 as image1 Imageview 的 uiimageview 时调用按钮单击事件 这是我的代码 IBAction buttonClicked id sender myTimer NS
  • C++ 中的本地类型作为模板参数 [重复]

    这个问题在这里已经有答案了 这是我的代码 include
  • 如何平移/缩放 HTML 内容? (即 Google 地图、WordSquared)

    我正在寻找平移 缩放页面上的 HTML 内容 就像 Word 2 wordsquared com 一样 但我找不到 jQuery 插件或其他任何可以提供帮助的东西 我是否忽略了一些简单的事情 我真的不知道从哪里开始 虽然与 Word 2 和
  • 如何找到数组中最长的连续数字链

    例如我们有 0 1 3 5 7 8 9 10 12 13 结果一定是7 8 9 10因为它们在索引方面彼此相邻并且是连续的整数 而且这个链比0 1 英语不是我的母语 如果文笔有点晦涩 请见谅 使用将项目分组为子序列itertools gro
  • 为什么 Flink SQL 对所有表使用 100 行的基数估计?

    我不确定为什么逻辑计划没有被正确评估这个例子 https stackoverflow com questions 53601410 apache flink enable join ordering 53981000 53981000 我更
  • 将 F# 添加到 Visual Studio 2010 C# Express - 可能吗?

    我的问题涉及 会有 F Express 版本吗 https stackoverflow com questions 977132 will there be a f express edition 鉴于没有 VS 2010 F Expres
  • 如何使用函数身份验证或 Azure AD 服务主体对 Azure 函数进行身份验证

    我有一个 Azure 函数 用于从 Azure AD 获取数据 但我想限制谁可以使用该函数 因为它将使用 HTTP 触发器 以便我稍后能够从逻辑应用程序调用该函数沿着路 因此 由于 HTTP 触发的 Azure Functions 具有公共
  • Objective-C 结构体属性的键值编码

    根据苹果的文档键值编码编程指南 http developer apple com library ios documentation cocoa conceptual KeyValueCoding Articles DataTypes ht
  • FasterCSV:读取远程 CSV 文件

    我似乎无法让它发挥作用 我想从不同的网络服务器中提取 CSV 文件以在我的应用程序中读取 我想这样称呼它 url http www testing com test csv records FasterCSV read url header
  • SDN BeforeSaveEvent 在保存实体之前捕获事件!= T

    目前我已经集中了Id在 BeforeSave 应用程序事件中创建每个 NodeEntity 像这样的东西 Inject IdentifierFactory identifierFactory Bean ApplicationListener
  • 代码问题:格式字符串不是字符串文字[重复]

    这个问题在这里已经有答案了 可能的重复 SnowLeopard Xcode 警告 格式不是字符串文字 也没有格式参数 https stackoverflow com questions 1677824 snowleopard xcode w