标签:select sql注入 防止 空指针 int null sqlite where namespace
char *sqlite3_mprintf(const char*,...);
void sqlite3_free(void*);
sqlite3_mprintf 用来代替sprintf 来防止sql注入。
sqlite3_mprintf的内部操作:
?会将%Q,替换成给定的字符串。
?会在字符串两侧加上单引号 ‘ ,并使内部的单引号双倍。返回生成字符串的指针zSql 。
?如果字符串时空的,则生成"NULL" 。
zSql 需要使用sqlite3_free释放。
可以对空指针执行sqlite3_free。
#include <iostream> #include <stdio.h> #include "sqlite3.h" #define MAXLINE 1024 using namespace std; int main() { const char * arg1 = "\‘jojo\‘; \"select * from players\";"; char *zSql; zSql = sqlite3_mprintf("select password from players where name = %Q", arg1); printf("%s\n", zSql); sqlite3_free(zSql); return 0; }
输出
select password from players where name = ‘‘‘jojo‘‘; "select * from players";‘
标签:select sql注入 防止 空指针 int null sqlite where namespace
原文地址:https://www.cnblogs.com/sau-autumnwind/p/13973323.html