网站首页 > 开源技术 正文
这篇解决两件事:
1、(Node+Express)实现一个评论实例功能,以便在这个实例上做加入XSS攻击和设置预防攻击措施演示做准备。
2、先实现一个在服务端加入转义字符的功能。
真不喜欢写文章的时候贴代码,因为代码粘上去要么不识别,要么就特别丑(不同屏幕上看)。所以我在文末给了个github代码地址。呵呵!!
接着上篇(我们知道了XSS的几种攻击方式,也就是原理),这里通过构建一个Node服务和建立一个评论功能来演示在XSS的攻击下如何预防。
如果懂点Express,这个演示实例运行起来会很轻松。不太懂也没关系,clone下来运行node index.js直接访问就行。有关Express相关知识可以先忽略。
这段话很重要:整个操作的流程是这样的:首先用Express写两个接口,一个是获取用户输入的评论内容,将其暂存在一个变量对象中,另一个是获取评论内容接口,获取的就是刚刚用户输入的那个内容,从页面输入框输入内容,点击评论按钮,然后再点击获取评论按钮。
理清了上面这个操作流程,在结合上一篇的XSS攻击方式,就很容易知道评论功能是很容易受XSS攻击的模块了。
预防思路是这样的:
1、在服务端做一个编码功能,将字符进行转义存储。
2、前端获取到内容时进行反转义(也就是解码)。
3、因为解码是将内容原样输出到界面,所以还要进行过滤,去掉一些不合法标签(如:script、style等)。
今天这里只实现整个功能流程和服务端加个字符编码功能,有关于前端解码和过滤最后一篇在写。
一、服务端代码
html_encode函数就是在服务端加的转义字符的功能函数。评论内容存在comments对象中。
二、静态页面输出
这里有两个按钮,一个是点击提交评论,另一个是点击获取评论。
三、点击评论看后台
点击评论按钮时,在控制抬输出评论了内容。
四、点击获取评论
点击获取评论按钮时,看看浏览器控制台输出的是不是刚输入的内容。
这样的整个流程就跑通了,然后在来设置XSS攻击,和加XSS攻击预防措施就很明了了。
演示效果,在文件框中输入三种攻击情况代码,依然弹窗alert,也就是说结果是成功实现XSS攻击,并没有预防成功,不奇怪,因为上面讲过这篇我们只实现了在服务端做了字符转义和整个测试功能流程,客户端还没有做反转义和过滤等功能了。
总结:
主要还是夜色已晚,该休息了,下篇在续完。
代码下载:
https://github.com/wenpingzheng/xss.git
短内容,说完整事,哪怕只读一篇也能学知识。点击关注小郑搞码事,说的都是那堆代码。谢谢您的鼓励!
猜你喜欢
- 2024-10-22 调用 Express API时出现奇怪的CORS错误怎么办?
- 2024-10-22 详解如何从零开始搭建Express+Vue开发环境
- 2024-10-22 从零开始学习nodejs+express--交互环境
- 2024-10-22 express开发(一)简介与搭建(express创建项目)
- 2024-10-22 express中间件原理connect(express和koa中间件原理的区别)
- 2024-10-22 蓝易云 - centos系统直接部署express教程。
- 2024-10-22 Node + Express + Mysql: Todo List项目让你成全栈
- 2024-10-22 我为 Express 开了外挂(cad中的express怎么显示为中文)
- 2024-10-22 七爪源码:让我们 Dockerize 一个 Node.js Express 应用程序
- 2024-10-22 Node实战篇:Express--jade模板引擎(七)
你 发表评论:
欢迎- 03-19基于layui+springcloud的企业级微服务框架
- 03-19开箱即用的前端开发模板,扩展Layui原生UI样式,集成第三方组件
- 03-19SpringMVC +Spring +Mybatis + Layui通用后台管理系统OneManageV2.1
- 03-19SpringBoot+LayUI后台管理系统开发脚手架
- 03-19layui下拉菜单form.render局部刷新方法亲测有效
- 03-19Layui 遇到的坑(记录贴)(layui chm)
- 03-19基于ASP.NET MVC + Layui的通用后台开发框架
- 03-19LayUi自定义模块的定义与使用(layui自定义表格)
- 最近发表
-
- 基于layui+springcloud的企业级微服务框架
- 开箱即用的前端开发模板,扩展Layui原生UI样式,集成第三方组件
- SpringMVC +Spring +Mybatis + Layui通用后台管理系统OneManageV2.1
- SpringBoot+LayUI后台管理系统开发脚手架
- layui下拉菜单form.render局部刷新方法亲测有效
- Layui 遇到的坑(记录贴)(layui chm)
- 基于ASP.NET MVC + Layui的通用后台开发框架
- LayUi自定义模块的定义与使用(layui自定义表格)
- Layui 2.9.11正式发布(layui2.6)
- Layui 2.9.13正式发布(layui2.6)
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)