首页 > 其他分享 >06当你“被发送”了一条微博时,到底发生了什么?

06当你“被发送”了一条微博时,到底发生了什么?

时间:2023-09-10 14:22:40浏览次数:28  
标签:XSS 06 微博时 验证 JavaScript 用户 发送 黑客 浏览器

背景

2011 年微博真实出现的一次安全事件。整个事件的核心问题,其实出在这个可以点击的链接上。在这个事件中,黑客并不需要入侵到微博服务器中,只要用户点击了这个链接,就会“被发送”这样的博文。

Xss攻击是如何产生的?

本质:通过给定异常的输入,黑客可以在你的浏览器中,插入一段恶意的 JavaScript 脚本,从而窃取你的隐私信息或者仿冒你进行操作。

反射型xss

例如黑客诱导你点击某个链接,链接包含恶意脚本。使得用户的浏览器,最终执行的是黑客的脚本。

原理:反射型 XSS 是通过将恶意脚本注入到用户的请求中,然后服务器将该脚本作为响应返回给用户,从而触发脚本执行(html渲染时会执行js)。当用户点击链接或提交表单时,恶意脚本将被执行,可以窃取用户的会话信息、篡改页面内容等。

 

基于DOM的xss

与反射型 XSS 不同,基于 DOM 的 XSS 攻击不需要服务器的参与。直接通过诱导用户点击链接,然后执行恶意js

 

持久型xss

危害

1、窃取cookie

窃取cookie等敏感信息

2、未授权操作

直接代替用户在html进行各类操作。

微博 XSS 攻击事件中,黑客就利用 JavaScript 脚本,让用户发送了一个微博,微博中同时还带有反射型 XSS 的链接。这样一来,每个点击链接的用户都会通过微博的形式,诱导更多的用户点击链接,一传十、十传百,造成大范围的传播。

3、按键记录和钓鱼

JavaScript 的功能十分强大,它还能够记录用户在浏览器中的大部分操作。比如:鼠标的轨迹、键盘输入的信息等。也就是说,你输入的账号名和密码,都可以被 JavaScript 记录下来,从而被黑客获取到。

另外,即使某个存在 XSS 漏洞的页面不具备任何输入框,黑客还可以通过修改 DOM,伪造一个登录框,来诱导用户在本不需要登录的页面,去输入自己的用户名和密码。这也是“钓鱼”的一种形式,在这个过程中用户访问的域名是完全正常的,只是页面被篡改了,所以具备更高的迷惑性。

防护

1、验证输入or验证输出

防护的核心原则时:一切用户输入不可信。因此需要对用户输入进行验证,推荐时输出进行验证

注入点

2、编码

XSS 防护的核心原则就是验证,那具体该怎么去做验证呢?我认为,我们可以优先采用编码的方式来完成。所谓编码,就是将部分浏览器识别的关键词进行转换(比如 < 和 >),从而避免浏览器产生误解。对于客户端来说,编码意味着,使用 JavaScript 提供的功能对用户内容进行处理。例如

3、检测和过滤

在很多时候,编码会对网页实际的展现效果产生影响。比如,原本用户可能想展示一个 1>0,却被编码展示成了 1>0。

推荐使用白名单的规则

比如,在只输入一个分数的地方,规定只有整型变量是合法的。这样一来,你就能够检测出 99.99% 的攻击行为了。

4、Csp

所谓 CSP,就是在服务端返回的 HTTP header 里面添加一个 Content-Security-Policy 选项,然后定义资源的白名单域名。浏览器就会识别这个字段,并限制对非白名单资源的访问。

那我们为什么要限制外域资源的访问呢?这是因为 XSS 通常会受到长度的限制,导致黑客无法提交一段完整的 JavaScript 代码。为了解决这个问题,黑客会采取引用一个外域 JavaScript 资源的方式来进行注入。除此之外,限制了外域资源的访问,也就限制了黑客通过资源请求的方式,绕过 SOP 发送 GET 请求。目前,CSP 还是受到了大部分浏览器支持的,只要用户使用的是最新的浏览器,基本都能够得到很好的保护。

总结

预防 XSS 主要通过对用户内容的验证来完成。首先,我推荐在需要展示用户内容的时候去进行验证,而不是当用户输入的时候就去验证。在验证过程中,我们优先采用编码的方式来完成。如果编码影响到了业务的正常功能,我们就可以采用白名单的检测和过滤方式来进行验证。除此之外,我们可以根据业务需要,配置合适的 CSP 规则,这也能在很大程度上降低 XSS 产生的影响。

 

标签:XSS,06,微博时,验证,JavaScript,用户,发送,黑客,浏览器
From: https://www.cnblogs.com/Adam-Ye/p/17691173.html

相关文章

  • 06-MVVM模型
    每个Vue应用都是通过用 Vue 函数创建一个新的 Vue实例开始的:constvm=newVue({//选项})Vue的设计虽然没有完全遵循MVVM模型,但是也受到了它的启发。因此在文档中经常会使用 vm (ViewModel的缩写)这个变量名表示Vue实例。 MVVM模型M:模型(Mdel),对应Vue的......
  • Python开发实例(十五)电子邮件自动化:编写一个程序,自动发送电子邮件或处理收件箱
    在这个实例中,我们将使用Python编写一个程序,实现自动发送电子邮件的功能。我们将使用Python的smtplib库来发送电子邮件。首先,请确保你已经安装了smtplib库。如果没有安装,可以通过以下命令来安装:pipinstallsecure-smtplib下面是一个自动发送电子邮件的Python程序:importsmtplibfro......
  • 实验1实验2_212106091_林佳铭
    实验1基础代码实验1进阶代码pingall截图同一交换机内部的主机间连通性及通信带宽测试(h1h2)相同汇聚交换机下不同机架的主机间测试(h1h3)相同核心交换机不同汇聚交换机下的主机间测试(h1h5)实验2基础Pingall命令截图Ovs流表的命令结果截图H1pingH3抓包H2pin......
  • 9 UDP 消息发送
    没有客户端和服务端这一说法packageInternet;importjava.net.DatagramPacket;importjava.net.DatagramSocket;importjava.net.InetAddress;importjava.net.SocketException;//UDP:类似发短信//发送端publicclassTest09_UDP_User1{publicstaticvoidma......
  • P2206题解
    题目大意:给定一些指令,计算需要多大的舞台。这是一道大模拟!!!只要遍历每次指令,然后判断是否摔倒,摔倒输出`-1`否则记录,最后求出面积就行了。最后附上代码1#include<bits/stdc++.h>2usingnamespacestd;3constintxx[]={-1,0,1,0},yy[]={0,1,0,-1};//不同......
  • CF1106F
    题目链接description定义数列\(f\),当\(i>k\)时,\(f_i=\prod\limits_{j=1}^kf_{i-j}^{b_k}\)模998244353。已知数组\(b\)且\(f_1,f_2,\dots,f_{k-1}\)均等于1,给定\(n,m\)。求任意一个合法的\(f_k\)的取值(在\([0,998244352]\)间),使得\(f_n=m\)无解输出-1\(k......
  • 代码随想录算法训练营第三天| 203.移除链表元素 707.设计链表 206.反转链表
    203.移除链表元素链表定义structListNode{intval;ListNode*next;ListNode():val(0),next(NULL){};ListNode(intx):val(x),next(NULL){};ListNode(intx,ListNode*next):val(x),next(next){};}1.在原链表上移除链表元素classSolut......
  • live555做流媒体服务器时解决rtp over udp模式下, 客户端没有发送teardown时直接关闭
    在我们使用live555作为RTSP服务器时,客户端在rtpoverudp模式下,rtsp客户端没有发送teardown而直接断开连接时需要等待65秒才回调关闭的问题。分析问题在RTSPClientConnection中没有保存相应的session值,所以在RTSPClientConnection断开时,并没有删除相应的RTSPClientSession;解......
  • 【RabbitMQ】RabbitMQ 服务无法启动。系统出错。发生系统错误 1067。进程意外终止。
    问题描述RabbitMQ服务无法启动。rabbitmq-service.batstartRabbitMQ服务正在启动.RabbitMQ服务无法启动。系统出错。发生系统错误1067。进程意外终止。原因分析RabbitMQ和Erlang版本不匹配。解决方案查询并安装RabbitMQ版本对应Erlang版本https://www.rabbitmq.com......
  • 样本分析 99eddc2794077f97a5cfe3098f431c4cfc4fd6353957ee715b2eccbff066ce1d 由于.
     https://s.threatbook.com/report/file/99eddc2794077f97a5cfe3098f431c4cfc4fd6353957ee715b2eccbff066ce1d09:30:16:088, 99eddc2794077f97a5cfe3098f431c4cfc4fd6353957ee715b2eccbff066ce1d.exe, 1908:0, 1908, EXEC_create, C:\Users\bonelee\Desktop\99eddc2794077......