【问题标题】:How to write prepared statements for SQLite in iPhone如何在 iPhone 中为 SQLite 编写准备好的语句
【发布时间】:2009-07-27 08:52:20
【问题描述】:

如何在 iPhone 中为 SQLite 编写准备好的语句?是否可以在使用 sqlite db 的 iPhone 应用中进行 SQL 注入?

【问题讨论】:

    标签: iphone sql sqlite prepared-statement


    【解决方案1】:

    我建议,如果您现在开始开发 iPhone 应用程序,您可能应该使用 Core Data,而不是直接编码到 SQLite。话虽如此,创建一个准备好的语句很简单,well documented:

    sqlite3_stmt* statement_handle;
    sqlite3_prepare_v2(db, "select a,b from Table where c = ?", -1, &statement_handle, NULL);
    

    是的,在编码错误的应用程序中可能会发生 SQL 注入攻击。使用准备好的语句可以避免这种情况。

    【讨论】:

    • 核心数据对 iPhone 3.0 来说是新的吧?我相信,在 Core Data 深入用户群之前,SQLite 是安全的选择
    • 我的感觉是大多数实际购买应用程序的人已经拥有 3.0 或即将升级。不幸的是,几乎没有可靠的数据可供研究。
    • 使用 SQLite 可能比使用 Core Data 更容易做一些事情
    • 绝对。 Core Data 不是唯一的选择,也不一定是所有情况下的最佳选择。但这是一个很好的默认设置。
    【解决方案2】:

    除了 Core Data,我还建议查看更高级别的 iPhone SQLite 库,例如:FMDB

    【讨论】:

    • 这是“伴随”还是“替代”?我自己一直在使用 SQLite,需要开始切换...
    • 我在想Core Data FMDB
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多