我正在寻找可以执行用户输入完整性的iOS应用程序代码,尤其是在目标c上验证SQL注入的输入。
答案 0 :(得分:2)
对用户生成的输入使用绑定变量将避免任何SQL注入。但是,如果使用[NSString stringWithFormat:]
创建SQL语句,那么您将始终容易受到此类攻击。
这是使用绑定变量的示例,取自here:
const char *sql = "INSERT INTO data(coltext, colint, coldouble) VALUES(?,?,?)";
sqlite3_prepare_v2(db, sql, 1, &stmt, NULL);
sqlite3_bind_text(stmt, 1, [txt UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_int(stmt, 2, integer);
sqlite3_bind_double(stmt, 3, dbl);
sqlite3_step(stmt);
sqlite3_finalize(stmt);
那里有很多很多例子。
答案 1 :(得分:1)
如果使用输入验证技术,可以防止SQL注入,在该技术中,用户输入根据一组定义的长度,类型和语法规则以及业务规则进行身份验证。 正确处理用户输入数据,例如删除特殊字符。 通过使用带有占位符替换标记的强类型参数化查询API。
有关详细信息,请查看此How to prevent SQL Injection in iOS apps