Node.js 从零开发 web server博客项目[安全]
web server博客项目
- Node.js 从零开发 web server博客项目[项目介绍]
- Node.js 从零开发 web server博客项目[接口]
- Node.js 从零开发 web server博客项目[数据存储]
- Node.js 从零开发 web server博客项目[登录]
- Node.js 从零开发 web server博客项目[日志]
- Node.js 从零开发 web server博客项目[安全]
- Node.js 从零开发 web server博客项目[express重构博客项目]
- Node.js 从零开发 web server博客项目[koa2重构博客项目]
- 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 的特殊字符
- 在服务端中转译为
<scrit>alert(document.cookie)</script>
- 在服务端中转译为
密码加密 : 保障用户信息安全 ( 重要! )
- 万一数据库被用户攻破 , 最不应该泄露的就是用户信息
- 攻击方式 : 获取用户名和密码 , 再去尝试登录其他系统
- 预防措施 : 将密码加密 , 即使拿到密码也不知道明文
代码实现
- 创建
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博客项目[安全]的更多相关文章
- Node.js 从零开发 web server博客项目[express重构博客项目]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
- Node.js 从零开发 web server博客项目[数据存储]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
- Node.js 从零开发 web server博客项目[koa2重构博客项目]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
- Node.js 从零开发 web server博客项目[日志]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
- Node.js 从零开发 web server博客项目[登录]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
- Node.js 从零开发 web server博客项目[接口]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
- Node.js 从零开发 web server博客项目[项目介绍]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
- Vue+node.js实现一个简洁的个人博客系统
本项目是一个用vue和node以及mysql实现的一个简单的个人博客系统,整体逻辑比较简单.但是可以我们完整的了解一个项目从数据库到后端到前端的实现过程,适合不太懂这一块的朋友们拿来练手. 本项目所用 ...
- github pages + Hexo + node.js 搭建属于自己的个人博客网站
之前我写过一篇用Github实现个人主页的博客:https://www.cnblogs.com/tu-0718/p/8081288.html 后来看到某个大佬写的文章:[5分钟 0元搭建个人独立 ...
随机推荐
- Android popupwindow在低版本手机上无法显示
popupwindow偶尔的显示失效(在低版本Android系统的手机上,测试机6.0)实在是坑害了不少人,害,而且坑了for a long time.本小白就是其中一个受害者. 百度了N久N多还是没 ...
- generate_fixed_frame()方法生成Java方法栈帧
在从generate_normal_entry()函数调用generate_fixed_frame()函数时的栈与寄存器的状态如下: 栈的状态如下图所示. 各个寄存器的状态如下所示. rax: ret ...
- 阿里天池 NLP 入门赛 TextCNN 方案代码详细注释和流程讲解
thumbnail: https://image.zhangxiann.com/jung-ho-park-HbnqEhMBpPM-unsplash.jpg toc: true date: 2020/8 ...
- C++炮台实验
炮台实验 蒜头君在玩一个战争模拟游戏,他有高度为 1,2,3,... ,n的炮台各一个,他需要把这 n个炮台从左往右排成一行,并且炮口都朝向右边. 在这个游戏中,所有炮台发射的炮弹会摧毁前方所有高度比 ...
- 兼容ie9上传本地资源
在ie9中上传文件出现问题,大多数的上传文件都采用new Formdata创建添加文件,在IE9中不支持Formdata对象操作,ie10是支持的.所以只能使用表单提交的方式进行操作. <for ...
- 常用生成模型代码大全(pytorch/tensorflow)
感谢大佬开源分享 代码详见:https://github.com/wiseodd/generative-models
- 焦大:逛网seo案例浅析
http://www.wocaoseo.com/thread-93-1-1.html 逛,发现喜欢.这或许是很多人上网的喜欢方式,我隐约记得白鸦在一次采访上说到现在人的购物方式,在淘宝上人们决定买一件 ...
- Xutils 的框架问题retry error, curr request is null Android开发之网络请问问题
没有网络权限也能导致这个问题 也可能是因为模拟机没联网的问题
- mysql创建事务,分批次刷新大数据
对于需要刷新的大数据量,当一次刷新数据量过大时,事务太大,会导致binLog文件太大,在不同的数据库同步时,可能遇到问题,先整理如下,分批次刷新数据 DELIMITER // # 设置//为结束符,否 ...
- Java 中基本数据类型的变量的转换规则
基本数据类型之间的转换 变量之间的转换规则 布尔型变量在和其他 7 种基本数据类型做运算时,无法转化为其他的数据类型,所以下面所说的运算都是除了布尔型的其他 7 种基本数据类型之间的转换. 1.自动类 ...