在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

node

109次阅读
没有评论

共计 2125 个字符,预计需要花费 6 分钟才能阅读完成。

自动写代码机器人,免费开通

node-mysql 中怎么防止 SQL 注入,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

SQL 注入简介

SQL 注入是比较常见的网络攻击方式之一,它不是利用操作系统的 BUG 来实现攻击,而是针对程序员编程时的疏忽,通过 SQL 语句,实现无帐号登录,甚至篡改数据库。

node-mysql 中防止 SQL 注入

为了防止 SQL 注入,可以将 SQL 中传入参数进行编码,而不是直接进行字符串拼接。在 node-mysql 中,防止 SQL 注入的常用方法有以下四种:

方法一:使用 escape()对传入参数进行编码:

参数编码方法有如下三个:

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

escape()方法编码规则如下:

  Numbers 不进行转换;

  Booleans 转换为 true/false;

  Date 对象转换为 YYYY-mm-dd HH:ii:ss 字符串;

  Buffers 转换为 hex 字符串,如 X 0fa5;

  Strings 进行安全转义;

  Arrays 转换为列表,如 [‘a ,‘b] 会转换为 a ,‘b;

  多维数组转换为组列表,如 [[‘a ,‘b], [‘c ,‘d]] 会转换为 a ,‘b ), (‘c ,‘d);

  Objects 会转换为 key=value 键值对的形式。嵌套的对象转换为字符串;

  undefined/null 会转换为 NULL;

  MySQL 不支持 NaN/Infinity,并且会触发 MySQL 错误。

方法二:使用 connection.query()的查询参数占位符:

可使用 ? 做为查询参数占位符。在使用查询参数占位符时,在其内部自动调用 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

方法三:使用 escapeId()编码 SQL 查询标识符:

如果你不信任用户传入的 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()转义参数:

准备查询,该函数会选择合适的转义方法转义参数 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

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计2125字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 欧美成人免费看片一区 | 极品人妻videosss人妻 | 欧美 变态 另类 人妖 | 国产精品久久久久影视不卡 | 加勒比色老久久爱综合网 | 国产精品久久免费 | 少妇被粗大的猛烈进出视频 | 国产网站免费看 | 日本在线观看视频网站 | 国产精品久久久久久久网站 | 成人免费a级毛片 | 亚洲国产毛片aaaaa无费看 | 国产精品综合视频 | 久久久久麻豆v国产精华液好用吗 | 欧美亚洲激情视频 | 亚洲免费成人 | 欧美一级特黄aa大片 | 国产在线aaa片一区二区99 | 脱岳裙子从后面挺进去视频 | 日韩欧美一区二区不卡看片 | 国产一级一级一级成人毛片 | 免费级片 | 免费人成年短视频在线观看网站 | 国产福利在线永久视频 | 国产麻豆free中文 | 日韩少妇内射免费播放18禁裸乳 | 久久久精品国产sm最大网站 | 中文字幕视频在线播放 | 狠狠色丁香婷婷综合 | 亚洲图欧美日韩色综合图 | 丰满人妻熟妇乱又仑精品 | 九九热国产 | 免费看黄色的视频 | 少妇人妻偷人精品无码视频新浪 | 中文字幕欧美人妻精品一区 | 欧美成人鲁丝片在线观看 | 台湾综合色 | 中文字幕亚洲欧美日韩2019 | 天天干天天拍天天射天天添天天爱 | 免费国产视频在线观看 | 自拍偷区亚洲网友综合图片 |