web server博客项目

  1. Node.js 从零开发 web server博客项目[项目介绍]
  2. Node.js 从零开发 web server博客项目[接口]
  3. Node.js 从零开发 web server博客项目[数据存储]
  4. Node.js 从零开发 web server博客项目[登录]
  5. Node.js 从零开发 web server博客项目[日志]
  6. Node.js 从零开发 web server博客项目[安全]
  7. Node.js 从零开发 web server博客项目[express重构博客项目]
  8. Node.js 从零开发 web server博客项目[koa2重构博客项目]
  9. Node.js 从零开发 web server博客项目[上线与配置]
  • SQL 注入: 窃取数据库内容

    • 最原始 , 最简单的攻击 , 从有了 web2.0 就有了 sql 注入攻击
    • 攻击方式 : 输入一个 sql 片段 最终拼接成一段攻击代码
      • select username, realname from users where username='zhangsan'-- 'and password='123'

        用户名:zhangsan'--空格

        此时只需要在浏览器端用用户名登录即可

        用户名:zhangsan';delete from users;--空格 这将删除数据库所有内容
    • 预防措施 : 使用一个 MySQL 的 escape 函数处理输入内容即可
      • 代码实现

controller/login.js

const { exec, escape } = require('../db/mysql')
const { genPassword } = require('../utils/cryp') const login = (username, password) => {
username = escape(username)
password = escape(password) const sql = `
select username, realname from users where username=${username} and password=${password}
`
...
  • XSS 攻击 : 窃取前端的 cookie 内容

    • 攻击方式 : 在页面展示内容中参杂 js 代码 , 以获取网页信息
    • 在新建文档中的标题编辑及框中写入<script>alert(document.cookie)</script>
    • 预防措施 : 转换生成 js 的特殊字符
      • 在服务端中转译为&lt;scrit&gt;alert(document.cookie)&lt;/script&gt;
  • 密码加密 : 保障用户信息安全 ( 重要! )

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

        • 创建utils/crypto.js
const crypto = require('crypto');

// 密匙
const secret = 'abcdefg'; // sha256加密
function sha256(content) {
return crypto.createHmac('sha256', secret)
.update(content)
.digest('hex');
} // md5再次加密
function genPassword(password) {
return crypto.createHash('md5', secret)
.update(password)
.digest('hex')
} module.exports = {
genPassword
}
  • 使用

ctroller/user.js

const { exec, escape } = require('../db/mysql')
const { genPassword } = require('../utils/cryp') const login = (username, password) => {
username = escape(username) // 生成加密密码
password = genPassword(password)
password = escape(password) const sql = `
select username, realname from users where username=${username} and password=${password}
`
// console.log('sql is', sql)
return exec(sql).then(rows => {
return rows[0] || {}
})
} module.exports = {
login
}

Node.js 从零开发 web server博客项目[安全]的更多相关文章

  1. Node.js 从零开发 web server博客项目[express重构博客项目]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  2. Node.js 从零开发 web server博客项目[数据存储]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  3. Node.js 从零开发 web server博客项目[koa2重构博客项目]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  4. Node.js 从零开发 web server博客项目[日志]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  5. Node.js 从零开发 web server博客项目[登录]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  6. Node.js 从零开发 web server博客项目[接口]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  7. Node.js 从零开发 web server博客项目[项目介绍]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  8. Vue+node.js实现一个简洁的个人博客系统

    本项目是一个用vue和node以及mysql实现的一个简单的个人博客系统,整体逻辑比较简单.但是可以我们完整的了解一个项目从数据库到后端到前端的实现过程,适合不太懂这一块的朋友们拿来练手. 本项目所用 ...

  9. github pages + Hexo + node.js 搭建属于自己的个人博客网站

     之前我写过一篇用Github实现个人主页的博客:https://www.cnblogs.com/tu-0718/p/8081288.html   后来看到某个大佬写的文章:[5分钟 0元搭建个人独立 ...

随机推荐

  1. Typora安装教程

    一:Typora介绍 ​ Markdown是一种轻量级标记语言.通过简单的标记语法,它可以使普通文本内容具有一定的格式.所谓轻量级标记语言指的是一类用简单句法描述简单格式的文本语言. 二:下载地址 ​ ...

  2. java泛型笔记

    目录 概述 什么是泛型?为什么使用泛型? 例子 特性 使用方式 泛型类 泛型接口 泛型通配符 泛型方法 泛型方法的基本用法 类中的泛型方法 泛型方法的基本用法 泛型方法与可变参数 静态方法与泛型 泛型 ...

  3. Go | Go 语言打包静态文件以及如何与Gin一起使用Go-bindata

    系列文章目录 第一章 Go 语言打包静态文件以及如何与Gin一起使用Go-bindata 目录 系列文章目录 前言 一.go-bindata是什么? 二.使用步骤 1. 安装 2. 使用 3. 读取文 ...

  4. Shell脚本最佳实践

    Shell脚本最佳实践 0. 编码.缩进.文件命名和权限设置等 使用utf-8编码: 统一使用tab缩进或空格缩进,不要混用: 文件名以.sh结尾,并且统一风格: 添加可执行权限: chmod +x ...

  5. SpringBoot集成Swagger2,3分钟轻松入手!

    一.引入maven <dependency> <groupId>io.springfox</groupId> <artifactId>springfox ...

  6. 高并发&性能优化(二)------系统监控工具使用

    上一篇主要从总体介绍了高并发&性能优化的相关思路和方法,本篇主要介绍系统监控工具. [CPU查看工具] ------top命令(性能) 进入top命令后,按1即可看到每核CPU的运行指标与详细 ...

  7. 【原创】Kuberneters-ConfigMap的实践

    一.什么是ConfigMap        ConfigMap翻译过来即为“配置字典”,在实际的生产环境中,应用程序配置经常需要且又较为复杂,参数.config文件.变量等如果直接打包到镜像中,将会降 ...

  8. day40:python操作mysql:pymysql模块&SQL注入攻击

    目录 part1:用python连接mysql 1.用python连接mysql的基本语法 2.用python 创建&删除表 3.用python操作事务处理 part2:sql注入攻击 1.s ...

  9. Python 装饰器填坑指南 | 最常见的报错信息、原因和解决方案

    本文为霍格沃兹测试学院学员学习笔记. Python 装饰器简介 装饰器(Decorator)是 Python 非常实用的一个语法糖功能.装饰器本质是一种返回值也是函数的函数,可以称之为“函数的函数”. ...

  10. 如何安装CRX格式?Chrome插件离线安装,CRX格式安装方法 JSON-handle Chrome插件下载

    目前,Chrome官方已经禁止非Chrome商店的应用安装了,所以本站的应用还是通过国外服务器从谷歌官方应用市场下载下来的,提供给国内的广大用户使用,下面我们就以 Check my cookies 插 ...