Web安全之XSS攻击及防御

admin 2025年1月11日14:03:24评论7 views字数 2442阅读8分8秒阅读模式

XSS定义

XSS:(Cross Site Script)跨站脚本攻击,是一种“HTML注入”,由于攻击的脚本多数时候是跨域的,所以称之为“跨域脚本”。攻击者往Web页面里插入恶意html、javascript、style代码,破坏页面结构,盗用cookie。

XSS攻击方式

反射型:发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。

存储型:存储型和反射型的区别在于提交的攻击代码会存储在服务器端,下次请求目标页面时不用再提交xss攻击代码

XSS原理

xss攻击条件

1. 需要向页面注入恶意代码;

2. 恶意代码能够在浏览器被成功执行;

示例

1. 使用express.js构建Node应用,展示反射型XSS攻击

```

$ npm install express-generator -g

$ express xss

$ cd xss 

$ npm install

$ npm run start

# 访问 http://localhost:3000/

```

Web安全之XSS攻击及防御

构建成的项目文件:

Web安全之XSS攻击及防御

1. 在router文件夹下的index.js文件中,添加一个接收的xss参数。

Web安全之XSS攻击及防御

2. 在views文件夹下的index.jade文件中,将输入的xss攻击代码注入到页面中去。

Web安全之XSS攻击及防御

3. 运行```npm run start```,打开控制台发现浏览器拦截了xss攻击(见最后相关内容链接)

Web安全之XSS攻击及防御

关闭浏览器拦截xss攻击

Web安全之XSS攻击及防御

4. 再次运行```npm run start```,在地址栏输入:```http://localhost:3000/?xss=<img src="null" onerror="alert('xss攻击代码')">```

Web安全之XSS攻击及防御

分析:

当攻击者通过url的参数注入xss攻击代码,页面解析并执行了代码,或破坏代码结构或获取用户的一些信息。注入html代码,像Dom上的onclick,onchange,onerror事件可执行js代码。<iframe>标签在页面中插入第三方页面,在页面中植入广告。注入style样式代码,通过样式来改变页面展示,例如将body {display: none !important}代码注入到页面。script代码更为严重。

XSS防御措施

示例:

模拟评论功能,在输入框中输入评论功能,并在页面上展示输入的内容。

Web安全之XSS攻击及防御

在上面的图中看到,在输入框中输入了带有攻击性的代码段'<p> xss攻击模拟 <img src='null' onerror='alert(1)'></p>',通过下面控制台可看出,当获取评论的时候,在下面展示的是文字,和<img>标签。在<img>标签中的属性没了,可延伸当在页面渲染这段代码时,攻击性内容过滤掉,避免了攻击。

1. 编码

对用户输入的数据进行HTML Entity编码,例如: '<'字符用'&lt'的形式显示出来

Web安全之XSS攻击及防御

2. 过滤

移出用户上传的Dom属性,如onerror

移出用户上传的style节点,script节点,iframe节点等

Web安全之XSS攻击及防御

3. 矫正

避免直接对HTML Entity解码

使用Dom Parse转换,矫正不配对的Dom标签

相关内容

0. XSS攻击及防御Demo地址:

https://link.segmentfault.com/?enc=Lb66%2Fo217uyLCdfCMbGbHw%3D%3D.hhBOVED6nJc1dw2oECKBhn7xX%2Bp9nI5myUbiqxhuh82gajy2MOblSKq4TuiBTFZIRxGV4hdrn%2BSL8LdOY6YwiFUF1aszI%2FPqcDe3ivSxhOyxJDdFEqW35bW4v7aJDaUNN8fyP%2FGV0u8aODdHDTK67Q%3D%3D
  1. jade:一个高性能的模板引擎,可参考文档https://segmentfault.com/a/11...

https://segmentfault.com/a/1190000000357534

2. X-XSS-Protection:文档

https://link.segmentfault.com/?enc=J16mgKQLUcITyHXQJEvQnA%3D%3D.VkJwbecRlMqsMM4aQy0O6DrYWLaErLXGYea8mIVc%2BJKA6iFjVeOW0%2BAyXmnLquYHfDf09xqxuBYDpJFz8SO3fdOwATbXaV2lecUF1iEBK9Q%3D

3. HTML Entity编码表:

https://link.segmentfault.com/?enc=RCa87n9xjstM6Pm0KIfRCw%3D%3D.D6flqW1GwoRcrJWWBS2tzBOVKi6DHoc7ABHFf5tOghhyCNRq6Cu5fnc8CdWnE85mRAGTe5IJuizJ%2FhW3w264Og%3D%3D

4. 用到HTML解析的两个库:

https://link.segmentfault.com/?enc=Qusp6axpB49K1qUemVdNMQ%3D%3D.ZZih1zaulmRDinrV4pGHBi3sMDMIIIlk0t9QylAt9ygrMuL2y80WBIaVNGFB1IrR
https://link.segmentfault.com/?enc=9ZLEAufRQKCe0TBWOTfNmw%3D%3D.82%2ByjpJyzn8EbmJ7G%2FBjWU49QIsIGHX6qcfQ45mgwzUe3zCqIfIOT5BjDM1GX0JQLxygKON500gBQUO0V9zE0Ny4xKXID7TtGx1TD1mLf%2FVDebNo6IIVbtncHLv7Tzik

声明:本公众号所分享内容仅用于网安爱好者之间的技术讨论,禁止用于违法途径,所有渗透都需获取授权否则需自行承担,本公众号及原作者不承担相应的后果.

原文始发于微信公众号(橘猫学安全):Web安全之XSS攻击及防御

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月11日14:03:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Web安全之XSS攻击及防御http://cn-sec.com/archives/1153692.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息