摘要:是一种经常出现在应用中的计算机安全漏洞,它允许恶意用户将代码植入到提供给其它用户使用的页面中。如何攻击要合理使用与为了省事儿,把应当提交的数据,做成请求。
XSS
XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。 其实在web前端方面,可以简单的理解为一种javascript代码注入。举个例子,我们有个社交网站,允许大家相互访问空间,网站可能是这样做的:
For example:
submit点一下:
GG ~
如何防范?目前来讲,最简单的办法防治办法,还是将前端输出数据都进行转义最为稳妥。
比如,按照刚刚我们那个例子来说,其本质是,浏览器遇到script标签的话,则会执行其中的脚本。但是如果我们将script标签的进行转义,则浏览器便不会认为其是一个标签,但是显示的时候,还是会按照正常的方式去显示:
再试一下:
特殊情况?大部分情况下,我们靠对 html 实体字符的转义已经能够将 XSS 风险控制在门外。但是一些特殊情况我们不得不进行非转义字符串的输出时,隐患就会再次出现。
后端数据直出当我们需要后端直接将数据打印在 script 标签中生成 js 变量的时候,我们通常不希望变量的值被转义从而避免前端渲染的时候值被二次转义的问题,所以我们的代码会被输出成:
" };
试一下:
如何防范?将特殊字符进行字符串转义 比如 " " / 防止他们提前结束字符串、闭合 sciprt 标签。后端使用 json.dump() 实现。js 的 JSON.stringify 不会做这些操作
将输出变量字符进行 Unicode 编码
将输出变量字符进行 Hex 16进制编码 编码
", data1: "u003cu002fu0073u0063u0072u0069u0070u0074u003eu003cu0073u0063u0072u0069u0070u0074u003eu0061u006cu0065u0072u0074u0028u0030u0029u003cu002fu0073u0063u0072u0069u0070u0074u003e", data2: "x3cx2fx73x63x72x69x70x74x3ex3cx73x63x72x69x70x74x3ex61x6cx65x72x74x28x30x29x3cx2fx73x63x72x69x70x74x3e" };
再试一下:
转义就万无一失了?naive ! 点个链接一秒中招!
点我
链接中如果存在 javacript: 开头的协议,点击链接时浏览器会执行后面的代码,这个时候光转义是没有用的,需要对 url 协议进行白名控制,只允许 http, https, http, mailto 等安全协议
包括图片 src 属性img src="{{xss}}", iframe iframe src="{{xss}}" 都会存在这样的问题,都需要白名单处理。
处理方案总结 CSRFCSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。 其实就是网站中的一些提交行为,被黑客利用,你在访问黑客的网站的时候,进行的操作,会被操作到其他网站上(如:你所使用的网络银行的网站)。
如何攻击?要合理使用post与get, 为了省事儿,把应当提交的数据,做成get请求。 殊不知,这不仅仅是违反了http的标准而已,也同样会被黑客所利用。
比如,的网站中,有一个修改标题的操作使用的是 get 请求:
http://example.com/api?changetitle=CSRF
那么恶意攻击者可以使用:
这样的话,用户只需要访问一次黑客的网站,其实就相当于在你的网站中,操作了一次。然而用户却没有感知。
csrf攻击升级如果你使用了post请求来处理关键业务,并且我们校验了请求中的 cookie 是否包含了当前用户的登录状态。是否就是万无一失了呢。我们来看下面这个真实的例子。
docs 中创建文档的 API 是 https://xxx.xxx/api/explorer/create/ 需求通过 post 请求,带上 type 类型就可以创建一个新的文档。
攻击者在自己的网站中写下以下代码:
你当打开攻击者网站,并且通过诱导你成功点击按钮的时候,你就成功的发起了一次创建文档的请求。之前在我们的网站中就存在这样的问题,现在已经修复:
点击一下:
浏览器表单发起 POST 的时候,会给这次请求自动带上所请求域名的 cookie,这个 cookie 中保存着我们在源站中的登录信息,(通常为 sessionid:123456qwertyu 这种)。
应对方法
每个 post 请求都带上一个与前用户 session 绑定的唯一 token,每次收到请求都去校验这个 token 是否合法。
每个 post 请求都去校验请求的 referer 是否来自于源站,否则就拒绝。但这种方法有弊端,因为浏览器可以设置 请求中不带 referer,并且低端浏览器可以伪造 referer
现代浏览器可以通过设置 cookie 的 SameSite属性,来防止跨域调用时带上包含 sessionid 的 cookie set-cookie: xxx-session=4050e145-043a-4ed0-977a-47d88cd4bbc7; SameSite=Lax
目前我们的文档 采用了 1、3两种方法。
光说不练假把式,攻击一个试试你还别说,随便一找,真找到一个网站,没有校验 csrf token,我们去友情试探一下
严正声明,我是保持学习的态度,去试一试这个网站是否存在漏洞,所以找了一个提交工单的功能,来测试我们的跨站请求是否执行成功。请勿模仿
http://user.zhuolaoshi.com/m/...
为了防止装逼失败,先贴一张昨天实验成功的截图攻击一下:
攻击成功。
一个被忽略了很久的漏洞 window.opener带有 target="_blank" 跳转的网页拥有了浏览器 window.opener 对象赋予的对原网页的跳转权限,这可能会被恶意网站利用,例如一个恶意网站在某 UGC 网站 Po 了其恶意网址,该 UGC 网站用户在新窗口打开页面时,恶意网站利用该漏洞将原 UGC 网站跳转到伪造的钓鱼页面,用户返回到原窗口时可能会忽视浏览器 URL 已发生了变化,伪造页面即可进一步进行钓鱼或其他恶意行为:
代码如下
想象一下,你在浏览淘宝的时候,点击了网页聊天窗口的一条外链,出去看了一眼,回来之后淘宝网已经变成了另一个域名的高仿网站,而你却未曾发掘,继续买东西把自己的钱直接打到骗子手里。
修复方法为 target="_blank" 加上 rel="noopener noreferrer" 属性。
外跳的地址
缺点: 应为禁止了跳转带上 referrer,目标网址没办法检测来源地址。
还有一种方法是,所有的外部链接都替换为内部的跳转连接服务,点击连接时,先跳到内部地址,再由服务器 redirect 到外部网址。现在很多站点都是这么做的,不仅可以规避风险,还可以控制非法站点的打开
http://xxx.yyy.com终。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/95542.html
摘要:今天,我们就离大厂更近一点,共同学习阿里这份阿里巴巴集团安全测试规范阿里巴巴集团安全测试规范阿里巴巴集团安全测试规范背景简介为了规避安全风险规范代码的安全开发,以及如何系统的进行安全性测试,目前缺少相应的理论和方法支撑。 很多人都知道,在学校学的技术,初创公司的技术,外包公司的技术,自研公司...
摘要:黑体本系列讲解安全所需要的和黑体安全基础我的第一个网页黑体安全基础初识黑体安全基础初识标签黑体安全基础文件夹管理网站黑体安全基础模块化黑体安全基础嵌套列表黑体安全基础标签拓展和属性的使用黑体安全基础嵌套本系列讲解WEB安全所需要的HTML和CSS #WEB安全基础 : HTML/CSS | 0x0 我的第一个网页 #WEB安全基础 : HTML/CSS | 0x1初识CSS #WEB安全基...
摘要:为使用七层负载均衡的用户,提供安全高效的应用防护能力。基于负载均衡集群的运维能力,可快速进行扩容容灾迁移的部署。伴随着互联网+时代的到来,Web系统作为企业IT业务的基本负载平台,承载着各种不同种类的信息业务。但近年来针对Web应用的攻击事件频发,也让Web应用的安全防御面临着诸多挑战。国家互联网应急中心报告就曾显示,仅2020上半年国家信息安全漏洞共享平台(CNVD)收录通用型安全漏洞11...
摘要:的安全比你想象的还要差大会结束了,发表了题为的演说。宣称,根据可供选择的类库来倒腾你自己的栈,这种思想方法导致了系统级的安全问题。对于而言,安全的会话管理只有非常少量的被证明过的最佳实践。安全头在应用程序,没有集中的类库来居中管理安全头。 Clojure的web安全比你想象的还要差 ClojureWest大会结束了,Aaron Bedra发表了题为 Clojure.web/with-...
阅读 3351·2021-09-30 09:47
阅读 2734·2021-08-18 10:22
阅读 2520·2021-08-16 10:49
阅读 2886·2019-08-30 15:53
阅读 2735·2019-08-29 16:14
阅读 3187·2019-08-28 18:18
阅读 3232·2019-08-26 13:21
阅读 789·2019-08-26 12:02