PHP代码审计之xss漏洞
漏洞介绍:
跨站脚本攻击(Cross Site Scripting)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对
访问者进行病毒侵害的一种攻击方式。为了与层叠样式表(Cascading Style Sheets)的缩写CSS区分开,跨站脚本攻击通常简写为XSS。
漏洞危害:
挖掘思路:
没有过滤的参数,传入到输出函数中
漏洞思路:
• 搜索内容
• 发表文章
• 留言
• 评论回复
• 资料设置
漏洞类型:
• 反射型
• 存储型
• DOM型
反射型xss
非持久型,也叫反射型XSS。通过GET和POST方法,向服务器端输入数据。用
户输入的数据通常被放置在URL的query string中,或者是form 数据中。如果服务
器端对输入的数据不进行过滤,验证或编码,就直接将用户输入的信息直接呈现给
客户,则可能会造成反射型XSS。
反射型XSS是比较普遍的XSS,其危害程度通常被认为较小。但是某些反射型
XSS造成的后果会很严重,如在输入框的name中输入<meta http-
equiv="refresh" content="5" />,服务器不加处理,将name的值直接送到浏览
器,则浏览器会每5秒自动刷新一次。严重者会导致服务器崩溃。
反射型xss
常见场景:
• 将前端获取的内容,直接输出到浏览器页面
• 将前端获取的内容,直接输出到HTML标签
• 将前端获取的内容,直接输出到<script>标签
存储型xss
持久型,也叫存储型XSS。通常是因为服务器端将用户输入的恶意脚本没有通过
验证就直接存储在数据库,并且每次通过调用数据库的方式,将数据呈现在浏览器
上。则该XSS跨站脚本攻击将一直存在。若其他用户访问该页面,则恶意脚本就会
被触发,用于盗取其他用户的私人信息。
反射和存储的区别
反射型
输入--输出
存储型
输入--进入数据库--取出数据库--输出
Dom型xss
DOM,全称Document Object Model,是一个平台和语言都中立的
接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及
样式。
DOM型XSS其实是一种特殊类型的XSS,它是基于DOM文档对象模
型的一种漏洞。
DOM型数据流向
DOM-XSS 的数据流向是:URL-->浏览器
DOM型常见属性
修复方案
• 对所有输入中的script、iframe等字样进行严格的检查
• 验证数据的类型及其格式、长度、范围和内容
• 客户端做数据的验证与过滤,关键的过滤步骤在服务端进行检查
• 检查输出的数据
- 点赞
- 收藏
- 关注作者
评论(0)