`

XSS攻击的防范

 
阅读更多

 

1.过滤”<”和”>”标记
XSS跨站攻击的最终目标是引入script代码在用户的浏览器中执行,所以最基本最简单的过滤方法,就是转换”<”和’>”标记。
 
replace(str, "<", "&#x3C;")replace(str, ">", "&#x3E;")2.HTML属性过滤
使用上述的代码可以过滤掉”<”和”>”标记,让攻击者无法构造HTML标记。但是,攻击者可能会利用已存在的属性,如插入图片功能,将图片的路径属性修改为一段script代码,如
 
<img src="javascript:alert(/XSS攻击/)" width=100>
上述代码执行后,同样可以实现跨站的目的。而且很多的HTML标记里属性都支持“javascript:跨站代码”的形式,因此就需要对攻击者输入的数据进行如下转换:
 
replace(str, "javascript:", "")replace(str, "jscript:", "")replace(str, "vbscript:", "")
一旦用户输入的语句中含有”javascript”,”jscript”,”vbscript”,都用空白代替。
 
3.过滤特殊字符:&、回车和空格
因为HTML属性的值,可支持”&#ASCii”的形式进行表示,前面的跨站代码就可以换成这样:
 
<img src="javascrip&#116&#58alert(/XSS攻击/)" width=100>即可突破过滤程序,继续进行跨站攻击,使用代码:
 
replace(str, "&", "&#x26;")上述代码将”&”替换为了”&#x26;”,于是后面的语句就变形失效了。但是还有其他的方式绕过过滤,因为过滤关键字的方式具有很多的漏洞。攻击者可以构造下面的攻击代码:
 
<img src="javas     cript:alert(/XSS攻击/)" width=100>这里关键字被空格,准确的说是Tab键进行了拆分,上面的代码就又失效了,这样就有考虑将Tab空格过滤,防止此类的跨站攻击。
 
4.HTML属性跨站的彻底防范
即使程序设计者彻底过滤了各种危险字符,确实给攻击者进行跨站入侵带来了麻烦,攻击者依然可以利用程序的缺陷进行攻击,因为攻击者可以利用前面说的属性和事件机制,构造执行script代码。例如,有下面这样一个图片标记代码:
 
<img src="#" onerror=alert(/跨站/)>这是一个利用onerror事件的典型跨站攻击示例,于是许多程序设计者对此事件进行了过滤,一旦发现关键字”onerror”,就进行转换过滤。
然而攻击者可以利用的时间跨站方法,并不只有onerror一种,各种各样的属性都可以进行构造跨站攻击。例如:
 
<img src="#" style="Xss:expression(alert(/跨站/));">这样的事件属性,同样是可以实现跨站攻击的。可以注意到,在“src=”#””和“style”之间有一个空格,也就是说属性之间需要空格分隔,于是程序设计者可能对空格进行过滤,以防范此类的攻击。但是过滤了空格之后,同样可以被攻击者突破。
 
<img src="#"/**/onerror=alert(/跨站/) width=100>这段代码利用了脚本语言的规则漏洞,在脚本语言中的注释会被当成一个空白来表示。所以注释代码就简介的达到了空格的效果,使语句得以执行。
 
总结
以上攻击的出现,根本原因在于用户越权自己的标签,造成输入数据与程序代码的混淆。因此,保证程序安全的办法,就是限制用户输入的空间,让用户在一个安全的空间内活动。
 
其实过滤了”<”和”>”之后,就可以吧用户的输入在输出时放到双引号之间。然后要让用户的输入处在安全的领域里,这是可以通过过滤用户输入数据中的双引号“””,来防止用户跨越许可的标记。
 
另外,再过滤掉空格和Tab键就不用担心关键字拆分绕过了。最后,还要过滤掉“script”关键字,并转换掉&。
 
只要注意到以上这五点过滤,就可以基本保证网站程序的安全性,不被跨站攻击了。
 
当然,漏洞难免出现,要彻底地保证安全,舍弃HTML标签功能是最保险的解决方法,不过,这也许会让程序少了许多漂亮的效果。

分享到:
评论

相关推荐

    基于机器学习建模的 XSS 攻击防范检测.docx

    基于机器学习建模的 XSS 攻击防范检测.docx

    Yii2的XSS攻击防范策略分析

    XSS攻击防范策略是当下网络安全中的一个重要课题,而Yii2作为一款高性能的PHP框架,其内建的防范机制对于Web应用的安全起到了关键的作用。本文将详细分析Yii2框架中防止XSS攻击的策略,并探讨其原理与实施方法。 ...

    XSS 跨站脚本攻击及防范

    #### 四、XSS攻击防范措施 为了有效地防范XSS攻击,可以从以下几个方面入手: 1. **输入验证**:所有来自用户的输入都应经过严格的验证和清理,确保不会包含任何潜在的恶意代码。 2. **输出编码**:在将用户提供的...

    防范XSS攻击程序

    对用户输入的所有数据进行拦截,检测是否含有XSS攻击关键字,如果存在XSS攻击关键字,对一些特殊字符,如:“&lt;”、“&gt;”、“&”等进行转义。 实现方案 自定义一个Filter拦截器,使用 Filter来过滤浏览器发出的...

    sql注入xss攻击常见形式和解决方法

    SQL 注入和 XSS 攻击防范方法 SQL 注入攻击是指攻击者通过在表单中填入特殊的字符或者在 URL 中增加特殊的字符,然后想数据库发起请求,拼凑出 SQL 语句,达到攻击的目的。这种攻击方式可以通过在表单中填入特殊的...

    web安全之XSS攻击及防御pdf

    ### Web安全之XSS攻击及防御 #### 一、XSS基本原理 ##### 1.1 什么是XSS 跨站脚本攻击(Cross-Site Scripting,简称XSS)是一种常见的Web应用程序安全漏洞,其形成原因主要是由于Web应用程序对用户输入的数据过滤不...

    xss攻击详解,跨站攻击详解

    XSS攻击的防范可以通过多种手段实现,例如在输入和输出层面进行过滤。输入过滤是指在用户提交数据之前,对数据进行检查和清理,以防止恶意脚本被提交。输出过滤是在将数据输出到浏览器之前进行处理,确保输出的数据...

    springmvc4配置防止XSS攻击的方法

    XSS攻击是指攻击者通过在网页中嵌入恶意脚本代码,当其他用户浏览该网页时,恶意代码会执行,导致用户信息泄露、网站内容篡改等问题。而SQL注入攻击则是通过在Web应用的数据库查询接口输入恶意的SQL语句,以达到控制...

    web安全之XSS攻击demo

    本篇将深入探讨XSS攻击的概念、类型、危害以及防范措施,并结合提供的"web安全之XSS攻击demo"进行详细讲解。 XSS攻击是通过注入恶意脚本到Web页面中,使得当其他用户浏览这些页面时,脚本被执行,从而可以盗取用户...

    XSS的攻击 与防范

    XSS的攻击与防范 XSS的攻击与防范

    XSS跨站脚本攻击在Java开发中防范的方法

    #### XSS攻击原理与分类 XSS(Cross-Site Scripting)跨站脚本攻击是一种常见的安全威胁,它利用Web应用程序的安全漏洞,将恶意脚本注入到合法的网页中,进而攻击最终用户。XSS攻击主要分为以下两种类型: 1. **...

    SpringBoot +esapi 实现防止xss攻击 实战代码,满满干货

    SpringBoot是一个流行的Java微服务框架,而ESAPI(Enterprise Security API)则是一个开源的安全库,旨在提供一种简便的方式来防御多种Web应用安全问题,包括XSS攻击。本实战代码将展示如何结合SpringBoot和ESAPI来...

    安全漏洞XSS攻击方法详解

    XSS攻击的命名源自避免与CSS(层叠样式表)混淆,而并非“交叉站点脚本”。 XSS攻击的常见场景包括但不限于留言板、论坛或任何允许用户输入内容并显示给其他用户的地方。例如,一个简单的XSS攻击例子是在留言板中...

    XSS -攻击防御手册.pdf

    ### XSS攻击防御手册知识...综上所述,XSS攻击是一种多面且复杂的威胁,需要开发者和安全专家采取综合性的策略来防范。这不仅包括技术上的防护措施,还需要定期进行安全审计和用户教育,提高整体的安全意识和防护能力。

    XSS的攻击与防范2

    XSS的攻击与防范2 XSS的攻击与防范2

    XSS跨站脚本攻击剖析与防御

    - 6.4 "利用flash进行xss攻击剖析.pdf"可能讨论了Flash技术在XSS攻击中的角色,因为Flash曾经广泛用于网页交互,但其安全漏洞经常被利用。 - 6.3 "Flash客户端攻击剖析.pdf"则可能详细分析了Flash客户端的漏洞以及...

    php_XSS防攻击插件

    "php_XSS防攻击插件"便是这样一种工具,它专为PHP环境设计,旨在确保从HTML编辑器或文本域获取的JS传值不包含潜在的XSS攻击代码。 **HTMLPurifier库的介绍** 在提供的压缩包中,我们看到一个名为`htmlpurifier`的...

    防xss攻击和sql注入

    为了防范XSS攻击,我们可以: 1. 对用户输入进行过滤或转义:在接收到用户数据后,应用应确保将可能包含的特殊字符如 `、`&gt;`、`"`、`'` 等进行转义处理,防止它们被解析为HTML标签。 2. 使用HTTP头部的Content-...

Global site tag (gtag.js) - Google Analytics