4

私のObjectiveCコードには、ユーザーがテキストフィールドに入力したメモでSQLiteテーブルの列を更新する関数が1つあります。セキュリティ上の問題や一般的な問題が発生しないように、これを適切に実行していることを確認したいと思います。これが私のコードです、これをより安全にするために私ができることはありますか、それともすでに大丈夫ですか?

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

sqlite3_bind_textおよびsqlite3_bind_intを介してユーザー入力を渡すため、SQLインジェクションはすでに安全です。

于 2012-07-14T11:10:30.287 に答える
0

良い質問![NSString stringWithFormat]SQLステートメントの作成に使用するような愚かなことをするのではなく、値をバインドすることによって、すでに正しいことをしているように見えます。

于 2012-07-14T11:12:24.780 に答える