xss攻击基础

一、什么是XSS?

跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意的Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

二、XSS种类

XSS攻击的分类主要有“反射型”与“存储型”两种。

“反射型”攻击者通过包装改造URL参数,然后利用前端代码的缺陷或漏洞来攻击,它更偏向于前端层面,并且在实际攻击中攻击者会根据 HTML实体编码、URL编码、Unicode编码等进行编码然后欺骗用户点击访问。

而“存储型”攻击者则会通过抓包工具或者是直接调用接口的方式想尽一切办法来向后端数据库注入数据。常见的地方就是留言评论或者是含有表单提交的地方。

三.一个简单的反射型XSS攻击实例

这是一个简单的网站,有一个输入名字的交互功能。

输入hello之后网站会回显给用户。

图形用户界面, 文本, 应用程序

描述已自动生成

网站源码如图

图形用户界面, 文本, 应用程序

描述已自动生成

我们会发现自己输入的hello在网页源码上有显示

图形用户界面, 文本, 应用程序

描述已自动生成

这时我们可以用一些html标签测试一下,例如<h1>

图形用户界面, 文本, 应用程序

描述已自动生成

结果发现网页并没有显示welcome*<h1>hello*,而是如图所示

图形用户界面, 文本, 应用程序

描述已自动生成

网页源码如下

文本

描述已自动生成

我们可以发现我们打的<h1>被网页当成了标签并进行了解析。

下一步我们可以尝试输入一些js代码。例如<script>alert(1)</script>

图形用户界面, 文本, 应用程序

描述已自动生成

结果发现网站解析了我们打的js代码,进行了弹窗

图形用户界面, 文本, 应用程序

描述已自动生成

此时网页源代码如下

文本

描述已自动生成

四.对简单反射型XSS攻击常用防御手段

1.str_replace函数

使用str_replace函数,如str_replace('<script>',' ',$name);

将<script>标签替换为空

2.preg_replace() 正则替换

如$name=preg_replace('/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i',' ',$name);

只要中间插入有<,s,c,r,i,p,t,都会将它们匹配为空,最后面的i起到的是忽略大小写的作用。

3.htmlspecialchars(string):

把预定义的字符"<",">",&,',"转换为HTML实体,防止浏览器将其作为HTML元素

如$name=htmlspecialchars($name)

posted @ 2023-10-10 21:26  qian23  阅读(45)  评论(0编辑  收藏  举报