一、安全
1.sql注入:窃取数据库内容
- 最原始、最简单的攻击,从有个 web2.0 就有了 sql 注入攻击
- 攻击方式:输入一个sql片段,最终拼接成一段攻击代码
- 预防措施:使用 mysql 的 escape 函数处理输入内容即可
- 工具改造javascript
module.exports = { exec, escape: mysql.escape }
- sql查询 需要去掉单引号javascript
const getList = (author, keyword) => { author = escape(author); keyword = escape(keyword); let sql = `select * from blogs where 1=1 ` if (author) { sql += `and author = ${author} ` } if (keyword) { sql += `and title like %${keyword}% ` } sql += `order by createtime desc;` return exec(sql) }
- 工具改造
2.xss攻击:窃取前端的 cookie 内容
- 攻击方式:在页面展示内容中掺杂 js 代码,以获取网页信息
- 预防措施:转换生成 js 的特殊字符
& --> &
< --> <
> --> >
" --> "
' --> '
/ --> /
- 工具
- 安装shell
npm i xss --save
- 安装
3.密码加密:保障用户信息安全
- 万一数据库被攻破,最不应该泄漏的就是用户信息
- 攻击方式:获取用户名和密码,再去尝试登陆其他系统
- 预防措施:将密码加密,即使拿到密码也得不到明文密码
- cryptojs
const crypto = require('crypto'); // 秘钥 const SECRET_KEY = 'ASDASD_12'; // 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); } const result = genPassword('123'); console.log(result)