xxs漏洞危害_WEB安全之XSS漏洞

跨站脚本攻击(Cross

Site Scripting)。这是一种将恶意Javascript代码插入到其他Web用户页面里执行以达到攻击目的的漏洞。自1996年诞生以来,如今已经历十多年的演化。由于和另一种网页技术-层叠样式表(Cascading Style Sheets,CSS)的缩写一样,为了防止混淆,故把原本的CSS简称为XSS。在各种WEB应用安全漏洞中,XSS跨站脚本攻击漏洞一直被OWASP(Open Web Application Security Project)组织评为十大应用安全之一。

流程

xss注入简单流程.png

以博客留言板为例:

用户一般都是按照正常的语言文字在留言板进行留言。假如有一个攻击者,别有用心,反其道而行之,留言不再是一段正常的文字,而是输入了一串JavaScript脚本,如

此时网页的结构则变成如下形式:

XSS TEST

五楼:

一旦用户浏览留言板,此段JavaScript脚本变会被浏览器解析,返回给用户,造成XSS漏洞。这就是最简单形式的XSS漏洞。

常见的恶意脚本形式

针对XSS漏洞,一般比较常见的脚本形式如下:

1、利用XSS弹警告窗:

2、获取cookie形式:

3、嵌入其他网站:

4、XSS输入也可能是HTML代码段,如使网页不停刷新:

危害

①网络钓鱼,包括盗取各类用户账号。

②窃取用户cookie资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作。

③劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账,强制发表日志,发送电子邮件等。

④强制弹出广告页面,刷流量等。

⑤网页挂马。

⑥进行恶意操作,例如任意篡改页面信息,删除文章等。

⑦进行大量的客户端攻击,如DDOS攻击。

⑧获取客户端信息,例如用户的浏览历史,真实ip,开放端口等。

⑨控制受害者机器向其他网站发起攻击。

⑩结合其他漏洞进一步扩大攻击。

分类

xss根据攻击类型可分为如下三种形式:

1、反射型XSS

2、存储型XSS

3、DOM-based XSS

下面就具体的类型进行讲解。

反射型XSS

​ 反射型XSS也被称为非持久性XSS,是现在最容易出现的一种XSS漏洞。当用户访问一个带有XSS代码的URL请求时,服务器端接收数据后处理,然后把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,最终造成XSS漏洞。

反射型XSS.png,图片来源于互联网

​ 反射型XSS其基本思想就是依靠站点服务端返回脚本,在客户端触发执行从而发起Web攻击。例如,在搜索框中输入如下脚本:

点击搜索,页面弹出alert对话框。

存储型XSS

​ 存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种跨站脚本。允许用户存储数据的WEB应用程序都可能会出现存储型XSS漏洞,当攻击者提交一段XSS代码后,被服务器端接收并存储,当再次访问页面时,这段XSS代码被程序读取响应给浏览器,造成XSS跨站攻击。

存储型XSS.png,图片来源于互联网

​ 与反射型不同的是,存储型XSS属于二次渲染的漏洞,它首先会被持久化,然后从持久化中读取到页面,被页面渲染产生。如新增一个用户,将用户名写成如下形式:

保存后,如果未对用户名进行过滤,第二次访问用户信息时,会弹出alert窗体。

DOM-based XSS

​ DOM的全称为Document Object Model,即文档对象模型,DOM通常用于代表在HTML、XHTML和XML中的对象。使用DOM可以允许程序和脚本动态地访问和更新文档的内容、结构和样式。

​ 通过JavaScript可以重构整个HTML页面,而要重构页面或者页面中的某个对象, JavaScript就需要知道HTML文档中所有元素的“位置”。而DOM为文档提供了结构化表示,并定义了如何通过脚本来访问文档结构。根据DOM规定,HTML文档中的每个成分都是一个节点。

​ JavaScript重构的HTML页面,如果此中包含了恶意的脚本,便会造成DOM-based XSS漏洞。这种类型的漏洞常见的方式如下:

document.write()

document.writeIn()

xxx.innerHTML =

xxx.outerHTL =

innerHTML.replace

document.attachEvent()

window.attachEvent()

document.location.replace()

document.location.assign()

防御

​ 不管反射型XSS也好,存储型XSS也罢,DOM-based XSS也包括其中,其本质问题就是让对方浏览器执行你插入的JavaScript脚本。所以对于防御措施,主要有以下几种:

1、永远不要信任前端传过来的参数值,要对其进行过滤过滤再过滤。示例代码如下:

private String cleanXSS(String value) {

value = value.replaceAll("", ">")

.replaceAll("\\(", "(").replaceAll("\\)", ")")

.replaceAll("'", "'")

.replaceAll("\"", """)

.replaceAll("eval\\((.*)\\)", "")

.replaceAll("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']", "\"\"");

return value;

}

2、可采用合适的编码函数,如apache.commons.lang3.StringEscapeUtils中的escapeHtml4函数。

3、采用owasp推出的ESAPI接口,对字符进行转义,如:

ESAPI.encoder().encodeForHTML(name)

关于ESAPI后续文章将有介绍!

4、为Cookie加上HttpOnly标记。

以上便是对XSS漏洞的一些总结!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
神经网络可以用于检测钓鱼网站。具体来说,可以使用深度学习技术来训练一个神经网络模型,该模型可以根据网站的特征来预测该网站是否是钓鱼网站。这些特征可以包括网站的URL、域名、SSL证书、页面内容等等。 以下是一个简单的神经网络模型的例子,用于检测钓鱼网站: ```python import tensorflow as tf from tensorflow import keras # 定义神经网络模型 model = keras.Sequential([ keras.layers.Dense(64, activation='relu', input_shape=(10,)), keras.layers.Dense(64, activation='relu'), keras.layers.Dense(1, activation='sigmoid') ]) # 编译模型 model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) # 训练模型 model.fit(x_train, y_train, epochs=10, batch_size=32) # 评估模型 test_loss, test_acc = model.evaluate(x_test, y_test) print('Test accuracy:', test_acc) ``` 在这个例子中,我们使用了一个包含两个隐藏层的神经网络模型,每个隐藏层包含64个神经元。输入层包含10个特征,输出层包含一个神经元,用于预测网站是否是钓鱼网站。我们使用了sigmoid激活函数来输出一个0到1之间的概率值,表示该网站是钓鱼网站的可能性。 我们使用二元交叉熵作为损失函数,并使用Adam优化器来训练模型。在训练过程中,我们使用了批量大小为32的小批量随机梯度下降来更新模型参数。最后,我们评估了模型在测试集上的准确率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值