Skip to content
一、安全
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)
      }
  • 攻击方式:在页面展示内容中掺杂 js 代码,以获取网页信息
  • 预防措施:转换生成 js 的特殊字符
    • & --> &
    • < --> &lt;
    • > --> &gt;
    • " --> &quot;
    • ' --> &#x27;
    • / --> &#x2F;
  • 工具
    • 安装
      shell
      npm i xss --save
3.密码加密:保障用户信息安全
  • 万一数据库被攻破,最不应该泄漏的就是用户信息
  • 攻击方式:获取用户名和密码,再去尝试登陆其他系统
  • 预防措施:将密码加密,即使拿到密码也得不到明文密码
  • crypto
    js
    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)

Released under the MIT License.