鉴于声明:
const char *sql = "INSERT INTO FooTable (barStr) VALUES (?)";
以下使用sqlite3_bind_text
(和相关sqlite3_bind_*
函数)是否足以防止SQL注入攻击?
sqlite3 *db; sqlite3_stmt *dbps; int dbrc = sqlite3_open([dbFilePath UTF8String], &db); if (dbrc) { // handle error return; } dbrc = sqlite3_prepare_v2 (db, sql, -1, &dbps, NULL); sqlite3_bind_text(dbps, 1, [userContent UTF8String], -1, SQLITE_TRANSIENT); dbrc = sqlite3_step(dbps); if (SQLITE_DONE != dbrc) { // handle error } sqlite3_finalize (dbps); sqlite3_close(db);
cmeerw.. 13
是的,如果您只将用户提供的数据传递给sqlite3_bind_*函数,那么您就可以免受SQL注入攻击(这些攻击假设您动态构建查询字符串并且不会正确引用/转义用户提供的数据).
是的,如果您只将用户提供的数据传递给sqlite3_bind_*函数,那么您就可以免受SQL注入攻击(这些攻击假设您动态构建查询字符串并且不会正确引用/转义用户提供的数据).