补白: 本文针对mysqljs/mysql。
为了避免SQL注入,能够将SQL中传入参数进行编码,而不是直接进行字符串拼接。在node-mysql中,避免SQL注入的常用办法有以下四种:
参数编码办法有如下三个:
mysql.escape(param) connection.escape(param) pool.escape(param)
例如:
var userId = 1, name = 'test'; var query = connection.query('SELECT * FROM users WHERE id = ' + connection.escape(userId) + ', name = ' + connection.escape(name), function(err, results) { // ... }); console.log(query.sql); // SELECT * FROM users WHERE id = 1, name = 'test'
可运用 ? 做为查询参数占位符。在运用查询参数占位符时,在其内部主动调用 connection.escape() 办法对传入参数进行编码。
如:
var userId = 1, name = 'test'; var query = connection.query('SELECT * FROM users WHERE id = ?, name = ?', [userId, name], function(err, results) { // ... }); console.log(query.sql); // SELECT * FROM users WHERE id = 1, name = 'test'
上面程序还能够改写成如下:
var post = {userId: 1, name: 'test'}; var query = connection.query('SELECT * FROM users WHERE ?', post, function(err, results) { // ... }); console.log(query.sql); // SELECT * FROM users WHERE id = 1, name = 'test'
假如你不信任用户传入的SQL标识符(数据库、表、字符名),能够运用escapeId()办法进行编码。最常用于排序等。escapeId()有如下三个功用类似的办法:
mysql.escapeId(identifier) connection.escapeId(identifier) pool.escapeId(identifier)
例如:
var sorter = 'date'; var sql = 'SELECT * FROM posts ORDER BY ' + connection.escapeId(sorter); connection.query(sql, function(err, results) { // ... });
预备查询,该函数会挑选适宜的转义办法转义参数 mysql.format()用于预备查询句子,该函数会主动的挑选适宜的办法转义参数。
例如:
var userId = 1; var sql = "SELECT * FROM ?? WHERE ?? = ?"; var inserts = ['users', 'id', userId]; sql = mysql.format(sql, inserts); // SELECT * FROM users WHERE id = 1
1. https://github.com/mysqljs/mysql
2. http://itbilu.com/nodejs/npm/NyPG8LhlW.html
补白:Node.js与MySQL交互操作有许多库,详细能够在 https://www.npmjs.org/search?q=mysql 检查。
尽管比较繁琐,可是比较联合查询更有用。 记下来仍是能用到的。 进程列表 使命办理器对一切发现的敞开端口履行db_autopwn,进犯一切体系,并运用一个反弹式shell。...
成功利用此漏洞的攻击者可以在目标系统上执行任意代码。 然后攻击者可以安装程序; 查看,更改或删除数据; 或创建具有完全用户权限的新帐户。 安装配置Exchange Server,参考· https:/...
例如,你能够运用Int8类型的数组,将其分化为8位字节。 僵尸网络其间,清晰的针对我国境内施行进犯活动的,而且仍旧活泼的揭露APT 安排,包含海莲花,摩诃草,蔓灵花,Darkhotel,Group 1...
「哪里找黑客接单_qq黑客解密找哪个-暗网上找黑客」加上一个单引号,报错了if (!url.contains("google.com")) {220.170.79.195 21 80 443 3389...
接着ntlmrelayx.py开始执行LDAP攻击,加上-debug选项后可以看到更详细的信息。 6、2019年5月31日do Windows 7 for 32-bit Systems Service...
$query = "select * from auth where username = '".$username."'";1月11日,360安全卫士云安全系统检测到国内闻名军事论坛“号角网”上呈现...