php抓取网页标签(XSS脚本攻击指的危害及危害说明(一))
优采云 发布时间: 2022-03-05 20:07php抓取网页标签(XSS脚本攻击指的危害及危害说明(一))
ID:计算机网络
为了与 Cascading Style Sheets (CSS) 的缩写区别,Cross Site Scripting 缩写为 XSS。跨站脚本攻击是指攻击者在网页中插入恶意代码,未经严格控制或过滤,最终展示给访问用户。攻击者通过注入的代码执行恶意指令。这些恶意网页程序通常是JavaScript、VBScript、ActiveX、Flash等,使用户加载并执行攻击者恶意创建的网页程序,从而达到恶意攻击用户的特殊目的。
XSS在研发过程中很难引起开发者的注意,但它的危害是非常严重的。XSS容易引起的安全问题如表1所示。
表 1 各种危害及危害描述
1、反射型 XSS
反射型XSS也称为非持久型XSS,是指攻击者通过构造非法请求,将恶意代码嵌入页面,欺骗用户主动点击浏览触发。攻击者主要通过电子邮件或聊天窗口向用户发送一些链接,让受害者点击。同样的也会出现在搜索引擎收录的搜索页面中,当用户进行关键词搜索并点击时,就会触发XSS攻击。
例如,为方便起见,开发人员在页面上显示当前页码并直接从浏览器中读取。下面的写法会导致XSS漏洞。
当用户在浏览器中输入带有 JavaScript 可执行脚本的参数时,就会生成 XSS 攻击脚本。例如,攻击者可以在地址栏中输入以下代码进行XSS漏洞检测。
;警报(1);
执行结果如图1所示。
图1 XSS漏洞
这时候可以猜到页面是page参数通过$_GET方法输出的,那么就可以构造一个URL,给页面写JavaScript代码,让它执行。当 URL 被加密并发送给受害者时,受害者就会执行恶意代码。
如果请求的远程地址如图2所示构造,在浏览器地址栏输入下一页的URL(URL开头的“”默认隐藏),获取的cookie可以是发送给远程攻击者,导致cookie被泄露。攻击者可以获得用户对该站点的完全访问权限。
;document.write('
')
图 2 会话推送到第三方
图 3 展示了反射型 XSS 的攻击过程。
图 3 反射型 XSS
1)用户正常登录web应用,浏览器保存了用户所有的cookie信息,包括session ID。
2)攻击者向用户发送收录恶意代码的 URL。
3)用户打开攻击者发送的恶意URL。
4)浏览器程序执行用户的请求。
5)同时执行恶意URL中收录的攻击者恶意代码。
6)攻击者使用的攻击代码的作用是将用户的cookie信息发送到攻击者的服务器并记录下来。
7)攻击者在获取到用户的cookie信息后,可以利用该信息劫持用户的会话,以用户身份登录。
2、存储的 XSS
存储型 XSS 也称为持久型 XSS。当攻击者输入恶意数据并将其保存在数据库中时,服务器脚本从数据库中读取数据并显示在页面上,所有浏览该页面的用户都会受到攻击。攻击行为总是和攻击数据一起存在的,比如在发布文章等地方添加代码,如果没有过滤或者过滤不严格,那么这些代码会存储在服务器中,代码执行当用户访问页面时触发。这种XSS比较危险,容易引起蠕虫、后台管理平台盲打、cookie被盗等。
图 4 展示了存储型 XSS 的攻击过程。
图 4 存储型 XSS
1)攻击者通过XSS漏洞将恶意代码提交到Web服务器永久存储。
2)Users/网站Administrators 正常登录Web 应用程序。如果登录成功,浏览器会保存所有用户的 cookie,包括会话 ID。用户/网站管理员请求一个受感染的页面。
3)服务器将用户请求的页面返回给浏览器。
4)浏览器执行恶意页面中收录的攻击者恶意代码。
5)恶意代码将用户的cookie信息发送到攻击者的服务器并记录下来。
6)攻击者获取到用户的cookie信息后,利用该信息劫持用户的会话并以用户身份登录,包括以平台管理员身份登录。
3、DOM XSS
DOM型XSS是一种特殊类型的XSS,也是一种反射型XSS,是一种基于文档对象模型(DOM)的漏洞。该漏洞是通过使用JavaScript将用户的请求嵌入到页面中触发的,该页面执行了用户的恶意代码。
var s=location.search;
s=s.substring(1,s.length); // 获取网址
varurl="";
if(s.indexOf("url=")>-1) {
var pos=s.indexOf("url=")+4; //过滤掉“url=”字符
url=s.substring(pos,s.length); // 获取地址栏中的URL参数值
}别的 {
url="参数为空";
}
document.write("url:"+url+""); // 输出
当用户使用如下URL请求访问时,地址栏中携带的JavaScript脚本会被触发执行,从而导致XSS注入漏洞。
#39;
同样,HTML 中的 DOM 事件函数允许 JavaScript 在 HTML 文档元素上注册不同的事件处理程序,如果使用不当也可能导致 XSS 注入漏洞。
在通过 PHP 程序向浏览器输出数据之前,应进行严格的输出检查,避免 XSS 漏洞。表2列出了JavaScript中一些容易触发XSS漏洞的常用函数,使用时一定要注意。
表 2 容易出现 XSS 的 JavaScript 函数
4、使用编码过滤和转换进行防御
过滤是指过滤 DOM 属性和标签,例如将程序逻辑添加到