4

我的目标 c 代码中有一个函数,它使用用户在文本字段中输入的注释更新 SQLite 表列。我想确保我正确地执行此操作,以便没有安全问题或一般问题。这是我的代码,我可以做些什么来使它更安全,还是已经可以了?

sqlite3_stmt *stmt=nil;
sqlite3 *cruddb;

//insert
const char *sql = "UPDATE Peaks SET notes=? where ID=?";

//Open db
sqlite3_open([path UTF8String], &cruddb);
sqlite3_prepare_v2(cruddb, sql, -1, &stmt, NULL);
sqlite3_bind_text(stmt, 1, [self.viewNotes.text UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_int(stmt, 2, [self.detailItem ID]);

sqlite3_step(stmt);
sqlite3_finalize(stmt);
sqlite3_close(cruddb);
4

2 回答 2

8

您已经是 SQL 注入安全的,因为您通过sqlite3_bind_textsqlite3_bind_int传递用户输入。

于 2012-07-14T11:10:30.287 回答
0

好问题!看起来你已经通过绑定你的值做了正确的事情,而不是做一些愚蠢的事情,比如使用[NSString stringWithFormat]构造 SQL 语句。

于 2012-07-14T11:12:24.780 回答