Node.js 从零开发 web server博客项目[安全]

时间:2023-01-08 00:15:53

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&period;js 从零开发 web server博客项目&lbrack;express重构博客项目&rsqb;

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

  2. Node&period;js 从零开发 web server博客项目&lbrack;数据存储&rsqb;

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

  3. Node&period;js 从零开发 web server博客项目&lbrack;koa2重构博客项目&rsqb;

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

  4. Node&period;js 从零开发 web server博客项目&lbrack;日志&rsqb;

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

  5. Node&period;js 从零开发 web server博客项目&lbrack;登录&rsqb;

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

  6. Node&period;js 从零开发 web server博客项目&lbrack;接口&rsqb;

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

  7. Node&period;js 从零开发 web server博客项目&lbrack;项目介绍&rsqb;

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

  8. Vue&plus;node&period;js实现一个简洁的个人博客系统

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

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

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

随机推荐

  1. HTTP图解

    本节内容 俗话说好的开发,底层知识必须过硬,不然再创新的技术,你也理解不深入,比如python web开发工程师,想要学习任何一个框架,底层都是http和socket,底层抓牢了,学起来会很轻松,所以 ...

  2. c&num;类库中使用Session

    网站开发中,为了保存用户的信息,有时候需要使用session.如果我们在aspx页面中使用Session,只需要Session["key"]=value就可以,获取时使用int u ...

  3. 用TMS的控件就可以了,有bug叫他们改

    [深圳]大宝delphi本身不是太隐定.不建议弄太多自己的东西.还要debug好长时间.为了快.便不去弄控件了够用了.真的.都不用花太多时间去弄这弄那.有bug叫他们改便可以.

  4. 理解Windows内核模式与用户模式

     1.基础 执行 Windows 的计算机中的处理器有两个不同模式:"用户模式"和"内核模式". 依据处理器上执行的代码的类型,处理器在两个模式之间切换.应 ...

  5. 关于安卓手机的牛逼软件termux使用

    最近在学着用linux,偶尔发现了一款神奇的软件--termux,termux是一款来自国外的终端模拟器,是运行在内部存储上的程序(不在内存卡上),功能比较强大,启动程序之后会进入命令行终端,需要基本 ...

  6. 分析比较KafkaWordCount及DierctKafkaWordCount

    参考spark官方文档,Spark Streaming + Kafka Integration Guide,其中提到Spark Streaming如何从Kafka中接收数据.主要有两种方法,一种是使用 ...

  7. 消息队列之ActiveMQ简单环境搭建

    准备: 环境:win7,Eclipse,jdk1.8 ActiveMQ版本:ActiveMQ 5.9.0 Release下载地址:http://activemq.apache.org/download ...

  8. scrapy官方安装方法

    安装依赖 sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libss ...

  9. Git 学习(三)本地仓库操作——git add &amp&semi; commit

    Git 学习(三)本地仓库操作——git add & commit Git 和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念.这在上文已有提及,本文具体说明什么是工作区及暂存区,以及 ...

  10. 【Android】17&period;1 Bound Services基本概念

    分类:C#.Android.VS2015: 创建日期:2016-03-03 一.Bound Services—被绑定的服务 1.什么是Bound Service Bound Service是指通过接口 ...