Node.js中用escape解决sql注入

直接拼写sql进行数据库的操作时,很容易被人在动态参数中加入特殊字符产生sql注入,威胁数据库的安全。

'use strict';

const mysql = require('mysql');

let param = 'ns';
let pool = mysql.createPool({
  user: 'root',
  password: 'root',
  database: 'nlp_dict'
});

pool.getConnection(function (err, conn) {
  let sql = 'select * from tb_nature where nature = "' + param + '" and del_status=1';
  conn.query(sql, function (err, result) {
    console.log(result);
  })
});

这时正常情况下能查询到一条数据,如果将param修改成
let param = 'ns"-- ';
sql语句就会变成
select * from tb_nature where nature = "ns"-- " and del_status=1
后面的del_status就会被参数中的 -- 注释掉,失去作用,能查询到多条数据。

如果对param使用escape包装下,就能将参数中的特殊字符进行转义,防止sql的注入。
let sql = 'select * from tb_nature where nature = ' + mysql.escape(param) + ' and del_status=1';

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是SQL数据库: SQL是Structured Query Language(结构化查询语言)的缩写。SQL是...
    西贝巴巴阅读 5,867评论 0 10
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,342评论 18 399
  • [SQL注入攻击] SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式...
    James黄杰阅读 7,720评论 0 30
  • 喜欢军事的朋友可以添加微信公众号军事之窗 ID:jszc81
    军事之窗阅读 2,047评论 0 0
  • 我们在一起了,不知道为什么。我跟我闺蜜说,是不是因为彼此都喝了一点酒的缘故,闺蜜说,就你们那酒量?对,我俩酒量都不...
    单飞的玉米阅读 1,009评论 0 0

友情链接更多精彩内容