码迷,mamicode.com
首页 > 数据库 > 详细

常见sqlite3 API的简单使用(5)

时间:2020-11-19 12:42:05      阅读:11      评论:0      收藏:0      [点我收藏+]

标签:select   sql注入   防止   空指针   int   null   sqlite   where   namespace   

防止sql注入

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";

 

常见sqlite3 API的简单使用(5)

标签:select   sql注入   防止   空指针   int   null   sqlite   where   namespace   

原文地址:https://www.cnblogs.com/sau-autumnwind/p/13973323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!