• 2914阅读
  • 11回复

[提问]求助下,如何在qt c++环境下防止sql注入 [复制链接]

上一主题 下一主题
离线whoami12131
 

只看楼主 倒序阅读 楼主  发表于: 2020-01-27
自己的代码被学安全的学长指出有sql注入漏洞,但是没告诉我如何修复,去网上也查不到c++的相关代码,求各位大佬告知,我的代码是下面的这种
离线圣域天子

只看该作者 1楼 发表于: 2020-01-29
你存放sql的文件有被其它程序篡改的风险。
代码本身看不出什么问题
离线fsu0413

只看该作者 2楼 发表于: 2020-01-29
你可以想象一下%1里如果有单引号会是什么效果
离线apud

只看该作者 3楼 发表于: 2020-01-29
对参数进行转义。
离线whoami12131

只看该作者 4楼 发表于: 2020-01-30
回 圣域天子 的帖子
圣域天子:你存放sql的文件有被其它程序篡改的风险。
代码本身看不出什么问题 (2020-01-29 10:50) 

大佬,具体怎么做呢?请指点一下吧
离线whoami12131

只看该作者 5楼 发表于: 2020-01-30
回 apud 的帖子
apud:对参数进行转义。 (2020-01-29 15:48) 

请问具体怎么做呢?我找了好多都是关于java的预编译的,c++这方面的实在找不到
离线whoami12131

只看该作者 6楼 发表于: 2020-01-30
回 fsu0413 的帖子
fsu0413:你可以想象一下%1里如果有单引号会是什么效果 (2020-01-29 13:52) 

会有sql ‘注入吧,但是具体怎么避免呢?请指点一下吧
离线apud

只看该作者 7楼 发表于: 2020-01-30
回 whoami12131 的帖子
whoami12131:请问具体怎么做呢?我找了好多都是关于java的预编译的,c++这方面的实在找不到 (2020-01-30 13:06) 

static QString addslashes(QString str){
        str = str.replace("\\","\\\\");
        str = str.replace("\"","\\\"");
        str = str.replace("'","\\'");
        return str;
}
简单点的实现,写一个转义函数,SQL中的变量都转义一下……
离线apud

只看该作者 8楼 发表于: 2020-01-30
回 apud 的帖子
apud:static QString addslashes(QString str){
        str = str.replace("\\","\\\\");
        str = str.replace("\"","\\\"");
 &nb .. (2020-01-30 15:21) 

这个是mysql中的知识点,和qt没什么大的关系,你可以先注入成功,然后再用该函数处理后看看能不能注入成功,自己动手试验看下是否有效果就知道了……
离线圣域天子

只看该作者 9楼 发表于: 2020-01-30
确保文件本身不是公开在外网上,只要文件本身不存在被篡改的可能性,就是安全的。
如果你的学长指的就是这个文件的话,就不是什么大问题,毕竟在文件中存放SQL,是常用的方式。
而且一般SQL注入,指的是网上请求的形式进行的,本地文件都是安全的。
所以你的代码其实是常用的,没什么风险的。
离线whoami12131

只看该作者 10楼 发表于: 2020-01-30
回 圣域天子 的帖子
圣域天子:确保文件本身不是公开在外网上,只要文件本身不存在被篡改的可能性,就是安全的。
如果你的学长指的就是这个文件的话,就不是什么大问题,毕竟在文件中存放SQL,是常用的方式。
而且一般SQL注入,指的是网上请求的形式进行的,本地文件都是安全的。
所以你的代码其实是常用的,没 .. (2020-01-30 17:19) 

好的,谢谢
离线whoami12131

只看该作者 11楼 发表于: 2020-01-30
回 apud 的帖子
apud:这个是mysql中的知识点,和qt没什么大的关系,你可以先注入成功,然后再用该函数处理后看看能不能注入成功,自己动手试验看下是否有效果就知道了…… (2020-01-30 15:24) 

好的,谢谢
快速回复
限100 字节
 
上一个 下一个