node.js博客学习之数据安全

396 阅读1分钟

sql注入:窃取数据库内容

  • 攻击方式:输入一个sql片段,最终拼接成一段攻击代码
  • 预防措施:使用mysql的escape 函数处理输入的数据即可

实例

escape: mysql.escape


username = escape(username)
password = escape(password)
const sql = `select username, realname from users where username=${username} and password=${password}'

xss攻击::窃取前端的cookie内容

  • 前端最熟悉的攻击方式,但sever端更应该掌握
  • 攻击方式:在页面展示内容中参杂js代码,以获取网页信息
  • 预防措施:转换生成js的特殊字符

实例

  • 安装xss模块:npm install xss --save

  • 防止用户上传的博客内容中掺杂js代码

const xss = require('xss')
const title = xss(blogData.title)

密码加密 :保障用户信息安全(重要)

  • 万一数据库被攻破,最不应该泄露的就是用户的信息
  • 攻击方式:获取用户名和密码,再去尝试登录其他系统
  • 预防措施:将密码加密,即使拿到密码也不知道明文

实例

加密工具函数,cryp.js,加密后字符串长度变化,数据库做相应更改

const crypto = require('crypto')

// 密匙
const SECRET_KEY = 'WJiol_8776#'

// md5 加密
function md5(content) {
    let md5 = crypto.createHash('md5')
    return md5.update(content).digest('hex')
}

// 加密函数
function genPassword(password) {
    const str = `password=${password}&key=${SECRET_KEY}`
    return md5(str)
}

module.exports = {
    genPassword
}