首页
学习
活动
专区
圈层
工具
发布

XSS的一些基本概念

如果用户此时访问了我们的恶意网站,就会执行我们恶意网站中的恶意AJAX代码,此AJAX代码会向银行网站发起HTTP请求,比如发起查询账户余额的请求(此时会默认附带用户的cookie)。...其实质就是以AJAX为载体,使用自定义HTTP头让浏览器与服务器进行协商,从而决定跨域请求是否应该成功。 所以实现CORS通信的关键是服务器是否实现了CORS接口。...其实现原理是在response中对某一项cookie设置为HTTPONLY=true,从而使该cookie不能被document.cookie 读取。...不过问题不大,如果我们有一个上传点,我们可以上传一个恶意JS文件,上传后如果我们知道此JS文件上传位置与文件名且上传的位置是本域,然后通过XSS实现加载此恶意JS文件。...用户登录B后,打开了我们的恶意网站A.com,A.com的内容为: B.com/user?

1.4K10

你不知道的CORS跨域资源共享

用户浏览了恶意页面 b.com,执行了页面中的恶意 AJAX 请求代码。 b.com 向 a.com发起 AJAX HTTP 请求,请求会默认把 a.com对应cookie也同时发送过去。...这里讲的重点 CORS(跨域资源共享) HTML5 提供的标准跨域解决方案,是一个由浏览器共同遵循的一套控制策略,通过HTTP的Header来进行交互;主要通过后端来设置CORS配置项。...~ 跨域时如何处理cookie cookie: 我们知道http时无状态的,所以在维持用户状态时,我们一般会使用cookie; cookie每次同源请求都会携带;但是跨域时cookie是不会进行携带发送的...; 问题: 由于cookie对于不同源是不能进行操作的;这就导致,服务器无法进行cookie设置,浏览器也没法携带给服务器(场景:用户登录进行登录操作后,发现响应中有set-cookie但是,浏览器...cookie并没有相应的cookie) 决解: 浏览器请求设置withCredentials为true即可让该跨域请求携带 Cookie;使用axios配置axios.defaults.withCredentials

1.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    前后端分离 | 关于登录状态那些事

    我们看一下传统的做法,前后端统一在一个服务中: [image1] 如图所示,逻辑处理和页面放在一个服务中,用户输入用户名、密码后,后台服务在session中设置登录状态,和用户的一些基本信息, 然后将响应...在这种结构下, 我们的登录状态怎么维持呢?上面的Cookie-Session机制还适不适用? 这里又分两种情况,服务A和服务B在同一域下,服务A和服务B在不同域下。...后台打印日志为: name:test-----value:same 好了,不同域下的前后端分离,可以通过JSONP跨域,从而保持登录状态。...若要发送Cookie,浏览器和服务端都要做设置,咱们要解决的是跨域后的登录问题,所以要允许跨域发送 Cookie。 后端要设置允许跨域请求的域和允许设置和接受Cookie。..."; } 我们通过@CrossOrigin注解允许跨域,origins设置了允许跨域请求的域,allowCredentials允许设置和接受Cookie。

    1.6K20

    前后端分离 | 关于登录状态那些事

    如图所示,逻辑处理和页面放在一个服务中,用户输入用户名、密码后,后台服务在session中设置登录状态,和用户的一些基本信息,然后将响应(Response)返回到浏览器(Browser),并设置Cookie...在这种结构下, 我们的登录状态怎么维持呢?上面的Cookie-Session机制还适不适用? 这里又分两种情况,服务A和服务B在同一域下,服务A和服务B在不同域下。...请求时能不能带上Cookie呢?我们实验结果如下,这里就不给大家贴代码了。 ? 由于我们在a.com域下的页面跨域访问b.com的服务,b.com的服务不能设置Cookie。...后台打印日志为: name:test-----value:same 好了,不同域下的前后端分离,可以通过JSONP跨域,从而保持登录状态。...若要发送Cookie,浏览器和服务端都要做设置,咱们要解决的是跨域后的登录问题,所以要允许跨域发送 Cookie。 后端要设置允许跨域请求的域和允许设置和接受Cookie。

    1.9K30

    SpringBoot2.0之CORS跨域配置并保持登录

    前端有自己的服务器来访问页面比如http://127.0.0.1:8080,然后通过网络库(Axios)来实现Ajax请求后端服务器http://127.0.0.1:8085来实现数据的展现。...这就是问题所在,下面我们配置SpringBoot的CORS来实现允许Ajax跨域。 2.配置CORS允许跨域访问。..., "resultCode":"00000" } 3.允许携带Cookies 当服务端使用session来保存登录信息,传统的应用时,只需要登录一次,剩下的访问都不需要登录,因为Cookie里保存了...:JSESSIONID=030E930C2891EFEA0B56A9023AC8EF09; Path=/; HttpOnly Transfer-Encoding:chunked 可以发现在Set-Cookie...这是因为前端设置了允许携带Cookie,但是后端没设置允许,所以后端也应该设置允许跨域带上cookie registry.addMapping("/**") .allowedHeaders("*")

    1.7K30

    有关Web 安全学习的片段记录(不定时更新)

    现在很多提交的实现不再使用 form 表单,比如只要监听某 button 标签事件,点击触发时执行事件,里面用 ajax 方式提交请求。...先直接根据post 过来的数据字段查数据库进行比对,但此时还需要验证cookie 不是伪造的,实现防伪造cookie的关键是通过一个单向算法 (例如MD5),举例如下: 当用户输入了正确的口令登录成功后...") 并通过set-cookie 设置浏览器的cookie。...Domain 和 Path 决定浏览器在访问此站点某目录下的网页时cookie 才会被发送出去(domain 可以设置为父域,但不可设置为子域和外域)。...需要注意的是设置 path 不能防止重要的cookie 被盗取,假设在同域下的a路径存在xss漏洞可以执行js,想盗取b 路径的cookie,只需在 b 路径用  iframe 方式加载 a 路径,获取

    2K00

    知乎某处XSS+刷粉超详细漏洞技术分析

    非同域这个条件,让工作很难正常进行。那么,怎么绕过呢? 既然我们无法获取cookie,我们自己设置一个值,不就可以了?! 这涉及到cookie的机制了。...x.a.com域下,可以设置x.a.com的cookie,也可以设置.a.com的cookie。所以,我们在link.zhihu.com下利用XSS设置.zhihu.com的COOKIE。...(当然,如果是php的话,我们也可以通过设置path,将cookie的优先级提到前面) 这样,后端在检查_xsrf的时候,会从cookie中获取我们设置的token,和表单中我们提交的token相比较。...1},testorigin:function(a){try{c.req.ajax(a)}catch(b){return 19!=b.code?!0:!1}return!..."}', _xsrf: "wooyun123123" }, true); 可见,我将_xsrf设置为wooyun123123,hash_id是被关注人的id,可以通过抓包获得。

    1.2K10

    AJAX全套

    概述 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上。...(博客园) “伪”AJAX 由于HTML标签的iframe标签具有局部加载内容的特性,所以可以使用其来伪造Ajax请求。 将返回值当作JavaScript去执行,然后再将服务器端返回的内容转换成普通文本格式 "json": 将服务器端返回的内容转换成相应的...预检”不通过 Access-Control-Request-Headers 基于cors实现AJAX请求: a、支持跨域,简单请求 服务器设置响应头:Access-Control-Allow-Origin...,DELETE") self.set_header('Access-Control-Max-Age', 10) d、跨域传输cookie 在跨域请求中,默认情况下,HTTP Authentication

    2.1K30

    day78_淘淘商城项目_11_单点登录系统实现 + 用户名回显 + ajax请求跨域问题详解_匠心笔记

    课程计划 1、SSO注册功能实现 2、SSO登录功能实现 3、通过token获得用户信息 4、ajax跨域请求解决方案--jsonp 1、服务接口实现 SSO系统就是解决分布式环境下登录问题的,本质上是解决分布式环境下...setPath(),设置为“/”    可以使用工具类。...缺点:由于淘淘商城首页footer.jsp,在每个系统中都有,可以在每一个系统的footer.jsp中写一个ajax发起请求调用当前系统的Controller,设置模型数据,然后展示数据。麻烦!...jQuery的官方域名与我们的工程所在的域名肯定是不一样的,但是不影响使用,这就是我们所说的js可以跨域请求js文件! 即:ajax无法跨域请求别的url,我们可以使用ajax跨域加载js文件。...3.3.2、服务端:springmvc支持jsonp的两种实现方法 ajax设置的callback函数,我们在后端就需要封装一个callback(jsondata),让前端将jsondata作为参数调用

    1.5K31

    你真的了解跨域吗

    a 通过脚本设置一个 Cookie document.cookie = "test=a"; 网页 b 读这个 Cookie let cookieA = document.cookie; console.log...,通过 window.postMessage 来互通数据 示例 还是以不同域的页面 a 和 b 为例子 页面a:http://www.hahaha1.com/abc/a.html,创建跨域 iframe...AJAX工作原理 Ajax 的原理简单来说通过浏览器的 javascript 对象 XMLHttpRequest (Ajax引擎)对象向服务器发送异步请求并接收服务器的响应数据,然后用 javascript...:"success", data:{ b: b } }) 创建一个回调函数,然后在远程服务上调用这个函数并且将JSON 数据形式作为参数传递,完成回调,就是 JSONP 的简单实现模式...注意,将此字段设置为 * 是很不安全的,建议指定来源,并且设置为 * 号后,游览器将不会发送 Cookie,即使你的 XHR 设置了 withCredentials,也不会发送 Cookie 「配置允许跨域请求的方法

    2.9K30

    AJAX 三连问,你能顶住么?

    就算强行开启withCredentials,携带跨域cookie,但是由于服务端并不会单独配置网站B的跨域cookie(需配置Access-Control-Allow-Credentials: true...但是为了和层叠式样式表区分,就用XSS简写表示 XSS的特征也可以概括为:跨域脚本注入,攻击者通过某种方式将恶意代码注入到网页上,然后其他用户观看到被注入的页面内容后会受到特定攻击 相比CSRF,XSS...(否则你就可以看到浏览器的报错信息-跨域cookie时,Origin不允许为) 问题2:如果伪造Origin头部呢?...But,这是因为服务端漏洞而存在的问题,设置Origin为的后台上为何要放置敏感资源?正常设置为Origin为的最大作用是用作公共API。 而且更重要的是,为何敏感资源就这样轻易的被获取了?...Allow-Origin可以设置特定的值,过滤特定的白名单 2. 对于一些公共的API,可以直接将Allow-Origin设置为`*` 3.

    1.5K21

    跨域分析以及通解

    CORS跨域示例 前端设置: 原生ajax: var xhr = new XMLHttpRequest(); // IE8/9需用window.XDomainRequest兼容 // 前端设置是否带cookie...node中间件实现跨域代理,原理大致与nginx相同,都是通过启一个代理服务器,实现数据的转发,也可以通过设置cookieDomainRewrite参数修改响应头中cookie中域名,实现当前域的cookie...实现原理:两个页面都通过js强制设置document.domain为基础主域,就实现了同域。...具体实现: A域:a.html -> B域:b.html -> A域:c.html,a与b不同域只能通过hash值单向通信,b与c也不同域也只能单向通信,但c与a同域,所以c可通过parent.parent...origin: 协议+主机+端口号,也可以设置为"*",表示可以传递给任意窗口,如果要指定和当前窗口同源的话设置为"/"。

    1.6K30

    浏览器同源策略及跨域的解决方法

    http://evil.com 向 http://mybank.com 发起 AJAX HTTP 请求,请求会默认把 http://mybank.com 对应 cookie 也同时发送过去。...银行页面从发送的 cookie 中提取用户标识,验证用户无误,response 中返回请求数据。此时数据就泄露了。 而且由于 Ajax 在后台执行,用户无法感知这一过程。...如果需要包含 cookie 信息,ajax 请求需要设置 xhr 的属性 withCredentials 为 true,服务器需要设置响应头部 Access-Control-Allow-Credentials...JSONP 跨域 由于 script 标签不受浏览器同源策略的影响,允许跨域引用资源。因此可以通过动态创建 script 标签,然后利用 src 属性进行跨域,这也就是 JSONP 跨域的基本原理。...获取 http://laixiangran.cn/b.html 页面的 window 对象, // 然后通过 postMessage 向 http://laixiangran.cn/b.html

    1.8K20

    史上最全的AJAX

    概述 对于web应用程序:用户浏览器发送请求.服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML),渲染并显示浏览器上· Ajax和Form表单提交数据的的好处有以下两种...(偷偷)进行的,页面上无任何感知· ·XML XML是一种标记语言,是Ajax在和后台交互时传输数据的格式之一· 利用AJAX可以做: 1丶注册时,输入用户名自动检测用户是否已经存在· 2丶登录时,提示用户名密码错误...”:尝试将返回值当做javascript去执行,然后再将服务器端返回的内容转换成普通文本格式 “json”:将服务器端返回的内容转换成相应的...基于cors实现AJAX请求:   1丶支持跨域,简单请求 服务器设置响应头:Access-Control-Allow-Origin = “域名”或“*” <!...,DELETE") self.set_header('Access-Control-Max-Age', 10)   4·跨域传输cookie 在跨域请求中,默认情况下,HTTP Authentication

    5K20

    什么是跨域?解决方案有哪些?

    二、 document.domain + iframe跨域 此方案仅限主域相同,子域不同的跨域应用场景。 实现原理:两个页面都通过js强制设置document.domain为基础主域,就实现了同域。...具体实现:A域:a.html -> B域:b.html -> A域:c.html,a与b不同域只能通过hash值单向通信,b与c也不同域也只能单向通信,但c与a同域,所以c可通过parent.parent...需注意的是:由于同源策略的限制,所读取的cookie为跨域请求接口所在域的cookie,而非当前页。...实现思路:通过nginx配置一个代理服务器(域名与domain1相同,端口不同)做跳板机,反向代理访问domain2接口,并且可以顺便修改cookie中domain信息,方便当前域cookie写入,实现跨域登录...node中间件实现跨域代理,原理大致与nginx相同,都是通过启一个代理服务器,实现数据的转发,也可以通过设置cookieDomainRewrite参数修改响应头中cookie中域名,实现当前域的cookie

    15.6K32

    九种跨域方式实现原理(完整版)

    你可能会疑问明明通过表单的方式可以发起跨域请求,为什么 Ajax 就不会?因为归根结底,跨域是为了阻止用户读取到另一个域名下的内容,Ajax 可以获取响应,浏览器认为这不安全,所以拦截了响应。...实现思路:通过nginx配置一个代理服务器(域名与domain1相同,端口不同)做跳板机,反向代理访问domain2接口,并且可以顺便修改cookie中domain信息,方便当前域cookie写入,实现跨域登录...} } b.html为中间代理页,与a.html同域,内容为空。...具体实现步骤:一开始a.html给c.html传一个hash值,然后c.html收到hash值后,再把hash值传递给b.html,最后b.html将结果放到a.html的hash值中。...实现原理:两个页面都通过js强制设置document.domain为基础主域,就实现了同域。

    1.8K30

    跨域

    很显然,如果 Cookie 包含隐私(比如存款总额),这些信息就会泄漏。更可怕的是,Cookie 往往用来保存用户的登录状态,如果用户没有退出登录,其他网站就可以冒充用户,为所欲为。...JSONP是通过动态创建元素来使用的,使用时为src属性指定一个跨域URL。元素与元素类似,都有能力不受限制地从其他域加载资源。...通过在跨域服务器中对响应头进行设置,实现对指定的域允许进行数据通信,如下代码是对响应头进行的设置: header("Access-Control-Allow-Origin", "http://a.jrg.com...:8080") 这个代码实现了 http://a.jrg.com:8080对其数据的访问; 2.4CORS跨域的实现步奏 本域:发出普通的AJAX请求 跨域服务器:在服务器端通过设置header属性来指定允许跨域的源地址...和b.xgj.com中一级都是xgj.com,a和b是主机名),对两个域名都设置document.domain = 一级域名来达到跨域的目的; 3.2降域的限制性 使用降域来达成跨域的目的有非常大的限制性

    2.7K30

    跨域请求方案 终极版

    二、 document.domain + iframe跨域 此方案仅限主域相同,子域不同的跨域应用场景。 实现原理:两个页面都通过js强制设置document.domain为基础主域,就实现了同域。...具体实现:A域:a.html -> B域:b.html -> A域:c.html,a与b不同域只能通过hash值单向通信,b与c也不同域也只能单向通信,但c与a同域,所以c可通过parent.parent...需注意的是:由于同源策略的限制,所读取的cookie为跨域请求接口所在域的cookie,而非当前页。...实现思路:通过nginx配置一个代理服务器(域名与domain1相同,端口不同)做跳板机,反向代理访问domain2接口,并且可以顺便修改cookie中domain信息,方便当前域cookie写入,实现跨域登录...node中间件实现跨域代理,原理大致与nginx相同,都是通过启一个代理服务器,实现数据的转发,也可以通过设置cookieDomainRewrite参数修改响应头中cookie中域名,实现当前域的cookie

    4.1K31
    领券