补白: 本文针对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 检查。
「压缩文件密码_雇佣黑客怎么联系-急需黑客帮忙怎么找」api_secret = sys.argv[3] 01 PHP+IIS+MYSQL1.强制下载后缀名为ASP、ASA的数据库文件然后,下一步,装置...
// See third_party/blink/public/mojom/appcache/appcache.mojom在2018年7月中旬,Managed Defense承认了针对同一职业的相似针...
依据这几天的经历,一个站点可能有几个不同的上传点,我再找找看,说不定有能打破的。 Signed Applet Attack运用java自签名的程序进行垂钓进犯; ASP代码使用表单(form)完...
一些用户在运用ASP.NET作为网站开发言语时,会呈现这样一个问题。用户提交表单宣布内容时,页面提示:应用程序中的服务器过错,从客户端(某某代码)中检测到有潜在风险的Request.Form值。 原...
1.1 组件称号随机化第一种技能是一个陈旧的被称为“跨协议脚本”的技能,2001年宣布的论文详细描述了此进犯,但要害的是无论是Redis仍是Memcached都有一个简略的根据行的协议,而且疏忽任何无...
很多人不知道怎么使用谷歌,现在黑客接单平台教你们如何使用谷歌查到自己想要的东西: 在搜索框上输入:“indexof/”inurl:lib 再按搜索你将进入许多图书馆,并且一定能下载自...