【nodejs学习笔记】安全:sql注入、xss攻击的概念和预防及密码加密的方式

本文涉及

  • sql 注入: 窃取数据库内容
  • xss 攻击:窃取前端的 cookie 内容
  • 密码加密: 保障用户信息安全

sql 注入

  • 最原始、最简单的攻击,从有了 web2.0 就有了 sql 注入攻击
  • 攻击方式∶输入一个 sql 片段,最终拼接成一段攻击代码
  • 预防措施∶使用 mysql 的 escape 函数处理输入内容即可

示例

比如一个只需要输入用户名和密码的登录界面:
在这里插入图片描述
假如用户在输入用户名的时候,在后面加上'-- (单引号–空格),比如用户gougou输入: gougou'-- ,那输入的密码不正确也能登录成功。因为这样做相当于把后面的 sql 注释掉了。甚至可以在输入用户名之后拼接 sql 语句执行其他更危险的操作。

举个例子:
一开始,
gougou 登录的时候正常输入用户名gouguo,密码liyi,sql 语句如下:select * from users where username='gougou' and password='liyi';
在这里插入图片描述
后来gougou使坏,用户名输入为gougou'-- ,这时候密码随便怎么输都无所谓,比如输入123,也能正确查询出该用户信息:
在这里插入图片描述

如何预防

通过 mysql 自带的 escape 函数处理输入内容。对用户输入的内容进行转义。

代码示例

db-mysql.js:

const mysql = require('mysql')
const {
    MYSQL_CONF } = require('../conf/db')
// 创建连接对象
const con = mysql.createConnection(MYSQL_CONF)
// 开始连接
con.connect()
// 统一执行 sql 的函数
function exec(sql) {
   
  return new Promise((resolve, reject) => {
   
    con.query(sql, (err, result)=>{
   
      if(err) return reject(err)
      resolve
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值