【老板要我啥都会】前端升全栈系列 项目安全

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 这里其中只有 xss 攻击是前端也需要搞的,密码加密的话是必要的,即使被攻击,对面拿到的也只是加密过的密码,还行这里其中只有 xss 攻击是前端也需要搞的,密码加密的话是必要的,即使被攻击,对面拿到的也只是加密过的密码,还行。

1.开始和SQL注入

安全:

  • SQL注入:窃取数据库内容;
  • xss攻击:窃取前端的2cookie内容;
  • 密码加密:保障用户信息安全(重要)

 

这里其中只有 xss 攻击是前端也需要搞的,密码加密的话是必要的,即使被攻击,对面拿到的也只是加密过的密码,还行这里其中只有 xss 攻击是前端也需要搞的,密码加密的话是必要的,即使被攻击,对面拿到的也只是加密过的密码,还行。

补充:

  • server端公鸡方式有很多,预防手段也很多;
  • 本文讲解常见的、能头改过web server(Nodejs)层面进行预防;
  • 有些攻击需要硬件和服务来支持(需要OP支持),比如DDOS

OP是运维,第三点也可以交给专业的团队来整理;

SQL注入:

  • 最原始、最简单的攻击,从有了web2.0就有了SQL注入攻击;
  • 攻击方法:输入一个SQL片段,最终拼接成为一段攻击代码;
  • 预防措施;谁用mysql的escape函数处理输入内容就可以了;

这种攻击就是在需要输入东西的时候,输入一些 sql 判断, 当我们去拼接起来的时候就会被攻击。 现在演示一下登录的时候,无外乎两种情况,成功或者失败。 而我们验证登录的话是根据 sql 语句(里面有密码和用户名)去搜索,但是如果传入的用户名后面有‘--就会把我们后面 根据密码判断的那一部分注释掉,导致不需要密码,只有用户名去搜索!

select usename,realname from users
where nsername = 'zhangsan' and password='123'

甚至离谱的话还可以利用‘; + 其它 sql 语句进行其它破坏;那么怎么预防呢?回到 mysql.js,向外暴露 mysql.escape,在user.js 那么对参数执行这个方法(注意拼写语句的时候就可以删掉‘’了)。该方法就是对一些特殊符号进行一个转义,让它成为一个普通的字符即可。所以所有要用到 sql 语句拼接的,最好都给参数加多一个 escape。

const loginCheck = (username,password) => {
    username = excape(username)
    password = expace(password)
    const sql = `select*from users where username=${username}and password=${password}`
    console.log(sql)
return exec(sql).then((loginData)=>{
    retuen loginData[0] || {}
}
}

2.XSS攻击

XSS攻击:

  • 我们前端最为熟悉的攻击方式,但是server端更为应该掌握;
  • 攻击方式:在页面展示内容当中掺杂js代码,已获得网页信息;
  • 预防措施:转换生成js的特殊字符;
  • 转换特殊字符:

& -> &

< -> &lt;

> -> &quot;

" -> &#x27;

/ -> &#x27;

重点是 > < 记得转换。 演示一下,在新建文章时我们将一段获取 cookie 的 js 代码作 为标题,发现在跳转后会出现 cookie 信息。(当然,因为 js 代码不是文字所以跳转后会变成空白的标题)。 预防很简单,只需要把<> 改掉就形成不了 js 代码,所以我们 安装一个 xss 包。回到 blog.js 引入 xss ,然后在新建博客那里 把 title 什么的用 xss 包起来就可以将特殊字符给抹掉(xss 是一个函数)。那么数据库里面存的就不是 js 代码而是被转义过的 js 代码! 当然跳转后是被转义的 js 代码,变成正常的代码这个可以由前端完成。

const title = xxs(blogData.title)
const content = xss(blogData.content)//针对需要用户的数据注意羽凡xss注入

3.密码加密

密码加密:

  1. 万一数据库呗用户攻破,最不应该泄漏的就是用户信息;
  2. 攻击方式:获取用户名和密码,再去尝试登录其他系统;
  1. 预防措施:将密码加密,即便拿到密码也不知道明文。

其实搞个加密算法就行,登录的时候把加密过的存到数据 库,在 utils 下面建一个 cryp.js,引入 node.js 自带的 crypto 库。定义一个密匙就是解开加密的钥匙,可以写的复杂,定义一 个 md5 函数进行 md5 加密,需要传入加密的内容。调用该库的 createHash(‘md5’)方法生成一个 md5,再调用 md5 的 update 方法,将内容放进去!再调用 digest(‘hex’)就是把输入输出变成 16 进制。

  再定义一个加密函数,传入一个密码,和密匙拼接起来成一 个字符串,然后传给我们的 md5 函数进行加密即可。注意只要是明文一样,加密出来的效果也一样。由于数据库长度问 题,我们把长度设置为 32,然后就可以把加密后的存进去 (update)。 回到登录,引入加密函数,在生成 sql 前先对输入密码进行加密就行。(escape 放在加密后,不然我们没有加‘’会报错。

总结:

  • 如何预防SQL注入;
  • 如何预防XSS攻击;
  • 如何加密密码

2345_image_file_copy_504.jpg

4.不使用框架开发server

总结:

  1. 开发了那哪些功能模块,完整的流程;
  2. 用到了那些核心的知识点;
  3. 回顾“server和前端的区别”
  4. 功能模块:

五部分:

  1. 处理http接口;
  2. 安全;
  3. 连接数据库;
  4. 日志;
  5. 实现登录;

2345_image_file_copy_505.jpg

流程图

核心知识点:

  1. http、Nodejs处理http、处理路由、mysql;
  2. cookie、session、Redis、Nginx方向代理;
  3. SQL注入、xss攻击、加密;
  1. 日志、stream、contrab、readline;

server和前端的区别:

  1. 服务稳定性;
  2. 安全(包括登录验证);
  3. 内存CPU(优化扩展);
  4. 集群和服务拆分(设计已支持);
  5. 日志记录;

下一步:

  1. 不使用框架开发,从0开始,罐组底层API
  2. 很琐碎、很复杂、没有标准可依据,很容易将代码谢鸾;
  3. 适合学习,但不是和应用,接下来开始express和KOA2
相关文章
|
8月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
407 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
10月前
|
Dart 前端开发
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
349 75
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
9月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
584 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
9月前
|
安全 前端开发 开发工具
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
456 5
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
|
9月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
459 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
10月前
|
Dart 前端开发 容器
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
327 18
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
10月前
|
前端开发 Java 开发工具
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
792 18
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
|
8月前
|
人工智能 JavaScript 前端开发
Vue 性能革命:揭秘前端优化的终极技巧;Vue优化技巧,解决Vue项目卡顿问题
Vue在处理少量数据和有限dom的情况下技术已经非常成熟了,但现在随着AI时代的到来,海量数据场景会越来越多,Vue优化技巧也是必备技能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
9月前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
259 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
10月前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
465 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    344
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    105
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    135
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    110
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    208
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    230
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    121
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    61
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    116
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    154