浅谈XSS

一、什么是XSS?

XSS(Cross Site Scripting)即跨站点脚本攻击。恶意攻击者在web页面中注入恶意脚本程序,当用户浏览页面时,恶意脚本程序运行,达到攻击用户的目的。

二、XSS的分类

反射型XSS

反射型XSS为非持久性XSS,恶意攻击者诱导用户点击一个嵌有恶意代码的链接,用户点击后恶意程序在用户浏览器中运行,达到攻击的目的。反射型XSS主要有以下步骤:

  1. 黑客诱导用户点击一个有恶意程序的URL
  2. 用户点击后,浏览器将包含有恶意程序的请求发送给服务器
  3. 服务器获取请求体后拼接恶意程序代码和html文件后返回给客户端
  4. 客户端收到后恶意程序在浏览器中运行,恶意程序可能会窃取用户的信息

存储型XSS

存储型XSS为持久型XSS,黑客将恶意攻击程序上传到服务器中,下次当用户浏览相关资源时,恶意程序会在用户浏览器上运行。存储型XSS主要有以下步骤:
1.黑客将恶意程序代码(如在留言板中写脚本)上传到服务器
2.当用户浏览相关资源时,返回包含有恶意程序的资源,浏览器解析执行恶意程序
3.此时用户信息就有可能被窃取

DOM-based型

DOM-based型XSS为非持久性XSS,由于客户端的JS可以对DOM进行读写,修改。当客户端从URL中读取数据后在浏览器中执行,如果在该URL中包含恶意程序,同时客户端又不对URL的内容不做处理判断就执行,有可能就会遭受XSS攻击。DOM-based XSS主要有以下步骤:

  1. 黑客构造好含有恶意程序的URL如:http://127.0.0.1/xsstest.html?url=javascript:alert(‘xsstest’);
  2. 客户端提取请求参数中的URL,并使用以下方法写入到DOM中,便会执行恶意程序代码
    使用如下方法,可能遭受XSS:
    a). document.write直接输出数据(包含a标签,href=url(上面含有javascript:的代码))
    b). 使用innerHTML直接输出数据(包含a标签,href=url(上面含有javascript:的代码))
    c). 使用location、location.href、location.replace、iframe.src、document.referer、window.name等

三、预防XSS

1.预防存储型和反射型XSS

渲染模式改为前端渲染,避免后端拼接HTML,使用前端渲染的好处就是,使用js来更新DOM,在更新DOM时,我们会明确的告诉浏览器:下面要设置的内容是文本(.innerText),还是属性(.setAttribute),还是样式(.style)等等。浏览器不会被轻易的被欺骗,执行预期外的代码了。

注意!纯前端渲染还需注意避免 DOMXSS 漏洞(例如 onload 事件和 href 中的 javascript:xxx 等)

如果拼接HTML是必须的,就是用合适的转义库对HTML拼接的地方进行转义(若不是必须就不用转义,因为转义有可能引起乱码问题)

2.预防DOM-based型XSS

在使用innerHTMLdocument.write() 时要特别小心,不能把不可信任的内容插入到页面上,尽量使用.textContentsetAttribute()。如果使用VueReact等技术栈,并且不使用 v-html/dangerouslySetInnerHTML 功能,就在前端 render 阶段避免 innerHTMLouterHTMLXSS 隐患。

DOM 中的内联事件监听器,如 locationonclickonerroronloadonmouseover 等,<a> 标签的 href 属性,JavaScripteval()setTimeout()setInterval() 等,都能把字符串作为代码运行。因此要对这些操作在使用前对内容进行检查。

3.其他一些预防措施

  • 对输入内容长度进行控制
  • 开启HTTP-Only,防止攻击脚本获取用户信息
  • 使用验证码

参考博文:
[1]: https://www.cnblogs.com/tugenhua0707/p/10909284.html
[2]: https://juejin.cn/post/6844903685122703367#heading-18

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
08-10
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值