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
}