关于xss:XSSCross-Site-Scripting跨站脚本攻击

原理页面渲染的数据中蕴含可运行的脚本。 类型攻打的根底类型包含:反射型(url参数间接注入)和存储型(存储到DB后读取时注入)。 注入点HTML节点内容注入el.innerHTML = "<script>alert(1);<\/script>";下面的代码不会失效,如果你在浏览器控制台运行就会看见: '\x3Cscript>alert(1);\x3C/script>'应该是对script这种非凡的标签进行了本义。 诱惑用户触发el.innerHTML = "<button onclick='alert(1)'>点击我</button>";和很多办法相似,如果用户被动触发一次,就能够了(有些操作须要被动用户触发,不然没有权限)。 DOM属性注入比方,在加载图片失败的时候,会调用该元素上的onerror事件,那么咱们就能够利用图片加载失败的回调触发: el.innerHTML = "<img src='/images-404.png' onerror='alert(\"图片加载失败,该我触发了~\");'>";进攻X-XSS-Protection浏览器自带防御机制,当初支流浏览器都反对,并且默认都开启了XSS爱护,用这个header能够敞开它。它有几种配置: 0:禁用XSS爱护;1:启用XSS爱护;1:mode=block:启用XSS爱护,并在查看到XSS攻打时,进行渲染页面(例如IE8中,查看到攻打时,整个页面会被一个#替换)。 对特定字符做本义比方如果须要innerHTML的模板中蕴含script等敏感标签,就把标签本义。 内容安全策略也就是CSP(Content Security Policy),用于指定哪些内容可执行。 咱们能够在http响应头中设置Content-Security-Policy,比方,咱们有如下的需要: 图片能够从任何中央加载(留神 "*" 通配符)多媒体文件仅容许从 media1.com 和 media2.com 加载(不容许从这些站点的子域名)可运行脚本仅容许来自于 userscripts.example.com如此就能够这样设置: Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com同时meta中也反对设置Content-Security-Policy: <meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';">

March 20, 2023 · 1 min · jiezi

关于xss:独立产品灵感周刊-DecoHack-045-新春程序员寻找副业灵感指南

本周刊记录乏味好玩的独立产品设计开发相干内容,每周公布,往期内容同样精彩,感兴趣的搭档能够点击订阅我的周刊。为保障每期都能收到,倡议邮件订阅。欢送通过 Twitter 私信举荐或投稿。春节后的第一期来了,过年出去玩了,鸽了一期周刊,这周也算是新的一年开始了,往年会持续给大家分享一些我每周看到的好玩乏味赚钱不赚钱的产品。 产品举荐1. LEMO FM-白乐音、放松、专一、深度睡眠是一款比拟拟物格调的白乐音 APP,它能够播放各种十分经典的、高质量的白乐音,比方:下雨、篝火、森林等,2023年1月6日上线,7 天之后就被苹果官网 App Store 收录到「每周编辑举荐」的第 1 位。这类产品也很适宜独立开发者来做,优质的设计,包装一个白乐音的性能。难看就会有人买单。能够看看作者@启徒弟公布的文章介绍:LEMO FM:做了个APP,上线7天就被苹果举荐了!! 2. Mgreader - 外刊这个网站收录了很多最新的外刊,练习英语的好中央。也能够下载下来看。 3. Camarts Photography作者 @dandyweng 上周公布的 APP ,适配了 iPad 和 iPhone,是用来整合作者本人兴趣爱好的集体我的项目——旅行、摄影、设计和编程。它是一个影集,展现在环游世界旅途中的摄影作品。这里有对于这个产品的具体介绍。PS:每天在朋友圈看到 Dandy 寰球各地游览摄影,照片拍的的确很不错。 4. Cerulean - 小工具合集iOS 上的多种小性能整顿,极致简洁。在 Android 上见到过很多这类实用小工具,这个做的也是十分全。 5. Tailor - Screenshot Stitching 长截图工具屏幕长截图工具用过很多个,这个 APP 做的交互很有意思,关上 APP 会主动帮你辨认最近的截图,会有直观的动效,间接保留即可,少了几步操作,体验做的十分好。是一个很不错的工具。 6. Moonly App — The Moon Calendar文章内容,难看的插画,冥想,塔罗牌,月亮占星术,这些可能看似很小众的货色,然而用户却很多,这个产品增长十分快,也很容易被苹果官网举荐。这也是上周美国今日举荐的APP。上周也看到了苹果编辑举荐的5款占星术APP。 7. Copilot: Track & Budget Money苹果举荐聚焦开发者栏目,上周介绍了 CoPilot 产品团队的这个我的项目,金融资金治理APP,可视化你资金流向,它的 AI 算法在机器学习的驱动下,特地善于主动对交易进行分类。记账这个品类是很多开发者的练手我的项目,用户群体也十分多,产品有本人的特点也会受到苹果的举荐基本还是要认真做出产品差别。 ...

January 30, 2023 · 1 min · jiezi

关于xss:这个不是XSS反射型漏洞吗

背景有人问了个问题:这个不是XSS反射型破绽?为什么? 而后他发了个录屏给我看。 录屏次要内容是上面这样的: 失常在网站搜寻什么,search接口就会返回搜寻到的数据列表。 比方在网站中搜寻"xss",search接口就返回几条xss相干的数据。 他是这样做的: 他在网站中输出了"xss",而后通过fiddler工具,把这个search接口的响应内容改了。 比方在其中的一条数据,嵌入了XSS攻打代码。 比方上面的代码: <img src='x' onerror='alert(/ice/);'/>而后他看到网站弹窗了,就感觉本人胜利的找到了XSS破绽,而且是反射型破绽。 我说:其实,这个不是XSS反射型破绽。 详情: https://mp.weixin.qq.com/s?__... 有问题可群征询:https://public-1253796280.cos...

November 21, 2022 · 1 min · jiezi

关于xss:xss反射型深入分析

有任何问题都能够留言征询。 定义再了解什么是xss反射型破绽? 这里有个核心思想,指的是用户输出了什么,那响应的内容必定会包含什么。 比方用户输出了"testxss",那响应的内容中,必定要包含"testxss"。 如果响应的内容中不包含"testxss",那这个就不属于xss反射型破绽了。 闭合标签攻击方式服务端渲染网上很多例子,讲的根本是服务端渲染下的xss破绽攻打。 比如说通过双引号闭合属性,进行xss攻打的例子,说的根本是服务端渲染,而不是客户端渲染,比方vue的客户端渲染。 Demo页面拜访:http://localhost:3001/?name="><img%20src=x%20onmouseover=alert(1) 此时服务端会把name的值:"><img%20src=x%20onmouseover=alert(1),赋予给模板解释,而后再返回给浏览器端渲染。 代码如下所示: 详情 请查看原文。 https://mp.weixin.qq.com/s?__... 有问题可群征询:https://public-1253796280.cos...

November 7, 2022 · 1 min · jiezi

关于xss:Refused-to-load-the-script-xxx-because-it-violates-the-followi

nginx配置内容安全策略csp的代码举例问题形容工作中,咱们做好我的项目当前,要公布到服务器上,供用户应用。不过为了我的项目平安,还是须要应用http协定自带的安全策略规定,去进行相应的配置,以避免他人应用一些脚本去攻打咱们的我的项目(跨站脚本攻打Cross-Site Script,即XSS) 所以本篇文章举例记录一下nginx中如何配置(如何在申请头中加上csp)对于Content-Security-Policy概念咱就不赘述了,详见官网文档:https://developer.mozilla.org... 业务场景比方我做的我的项目中,有以下资源须要从内部引入: 我的项目中应用了jquery脚本,从cdn.bootcdn.net拿过去的我的项目中应用了内部css款式,从cdn.bootcss.com拿过去的我的项目中应用了内部的图片,好几个网站的都有我的项目中也应用了内部的媒体资源音频,好几个网站的都有 要求: 除了这两个网站cdn.bootcdn.net、cdn.bootcss.com的脚本和样式表能拜访,别的一律回绝。只有不是这两个网站的,都拒接拜访,那必定不好攻打咱们的我的项目了呗对于图片资源和媒体资源不做限度(因为图片媒体资源并不太好攻打我的项目,js脚本倒是有肯定的危险)nginx代码配置http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; # 全局配置资源拜访规定-除本人外全禁了(前面写的除外) # 容许应用内联资源,内联脚本啥的 # data的URIs和blob流文件啥的也都能够拜访的,就是这一块不怎么限度,这个倒是没事的 # 这个基本上弃用了,加上吧,不妨 add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://cdn.bootcdn.net https://cdn.bootcss.com 'unsafe-inline' 'unsafe-eval'; connect-src * 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; media-src * data: blob: 'unsafe-inline'; font-src * data: blob: 'unsafe-inline'; frame-src *; style-src * 'unsafe-inline'; worker-src * data: blob: 'unsafe-inline';"; # 脚本资源拜访规定-只放行本人,外人全禁用(下面这两个网站的脚本容许拜访呢) # 容许应用eval函数 # 所有图片资源都放行容许拜访 # 所有媒体资源都放行容许拜访 # 所有字体资源都放行容许拜访 # 款式文件资源都放行 # 工作的资源都放行,不加就报错!得加上呢! location / { try_files $uri $uri/ /index.html; root C:/nginx-1.18.0/html/personmanage/dist; index index.html index.htm; } location /api/ { proxy_pass http://localhost:10000/; } }}留神: ...

May 26, 2022 · 1 min · jiezi

关于xss:xssstrike工具安装教程

文章不易,请关注公众号 毛毛虫的小小蜡笔,多多反对,谢谢 github clone首先是把我的项目克隆到本地,执行如下命令:git clone https://github.com/s0md3v/XSStrike此时可用编辑器关上XSStrike我的项目。 装置依赖包而后就是执行装置依赖包命令。通过python的命令来装置,在XSStrike根目录执行如下命令:pip3 install -r requirements.txt执行过程如下图所示: 详情 请查看:毛毛虫的小小蜡笔

May 16, 2022 · 1 min · jiezi

关于xss:clickjacking的示例讲解

文章不易,请关注公众号 毛毛虫的小小蜡笔,多多反对,谢谢。 概述clickjacking,中文叫点击劫持。是一种在网页中将恶意代码等暗藏在看起来平安的内容之下,并诱使用户点击的伎俩。 比方,用户收到一封蕴含一段视频的电子邮件,但其中的“播放”按钮并不是真正的播放视频,而是链入一购物网站。当用户点击“播放”按钮,理论是被诱骗进入了一个购物网站。 可简略的了解,clickjacking就是攻打网站嵌套了失常网站。 Demo代码如下所示: // 攻打网站<head> <meta charset="utf-8"> <title>clickjacking</title></head><body> <p>攻打网站</p> <iframe src="http://localhost:3001/clickjacking.html"></iframe></body>// 失常网站<head> <meta charset="utf-8"> <title>clickjacking</title></head><body> <p>失常网站</p></body>成果如下截图所示: 进攻根本就是怎么避免网站被他人嵌套。 CSP的frame-ancestors指令frame-ancestors指令,能够限定被嵌套网站的域名,协定等,如果不合乎则网站不会被加载。 比方在失常网站设置指定域名: app.use((req, res, next) => { res.append('Content-Security-Policy', "frame-ancestors 'self'"); // 其余代码...});成果如下截图所示: 须要留神的是,CSP的frame-ancestors指令,可代替旧的X-Frame-Options HTTP headers。 window.self和window.top的判断通过window.self和window.top来判断,如果不相等,则很大可能是被嵌套了。 window.self,返回一个指向以后 window 对象的援用。 window.top,返回窗口层级最顶层窗口的援用。 window.parent,返回以后窗口的间接父对象。 最初文章不易,请关注公众号 毛毛虫的小小蜡笔,多多反对,谢谢。有疑难和问题,请留言。如果感觉文章还能够,请点赞或珍藏,谢谢。

April 19, 2022 · 1 min · jiezi

关于xss:XSS系列之3种类型

一、概述Cross-site scripting,简称XSS,跨站脚本攻打。XSS是一种网站应用程序的安全漏洞攻打,是代码注入的一种。它容许歹意用户将代码注入到网页上,其余用户在浏览网页的时候,就会受到影响。 二、反射型XSS - Reflected XSS用户在页面的输出,通过http申请发送到服务端,服务端解决后,把用户输出原封不到返回到浏览器,浏览器也没做解决间接把用户输出显示到页面种。 1 示例:代码 // 服务端(koa2)router.get('/search', async (ctx, next) => { let req = ctx.request ctx.state = { title: 'xss', word: req.query.word } ctx.body = req.query.word ? req.query.word : ''})成果: 但当在URL输出<script>alert('xss')</script>的时候,就被攻打了。 个别多产生在服务端渲染(如下面的示例)以及浏览器端通过js间接渲染到页面($('#search').html(res.data))的状况 三、存储型XSS - Stored XSS相比反射型,存储型则是把用户输出存储起来了。可想而知影响范畴大很多。 这里就不演示了,有趣味可看看驰名的萨米XSS蠕虫攻打。 该蠕虫用JavaScript实现,利用贮存型XSS破绽流传。它在每个被感化的用户页面显示一行字串“but most of all, samy is my hero”,并将本人复制在该用户页面。当新的用户点击被感化的用户页面时,就会触发该程序在用户的浏览器中运行,导致蠕虫进一步流传,在该新用户主页上再度复制。在短短20小时内,从2005年10月4日公布起,超过一百万的用户都运行了该程序。这让该作者的账户在该社交网络上的关注量指数级增长,并让萨米蠕虫成为历史上传播速度最快的计算机病毒。四、基于DOM的XSS - DOM Based XSS反射型和存储型都必须通过服务端,但基于DOM的XSS则不必,间接在浏览器端攻打。 1 示例:代码 <head> <meta charset="utf-8"> <title>dom based xss</title></head><body> <script> document.write("正在拜访的网站是: " + decodeURIComponent(location.href)); </script></body>成果: 但当在URL输出#<script>alert('xss')</script>的时候,就被攻打了。 这种就是间接在浏览器端发动的攻打,没通过服务端。 最初公众号《毛毛虫的小小蜡笔》有疑难和问题,请留言。 ...

April 3, 2022 · 1 min · jiezi

关于xss:XSS跨站脚本攻击介绍

一、XSS破绽简介 XSS(Cross Site Script)即跨站脚本,攻击者通过在指标网站上注入歹意脚本,使之在用户的浏览器上运行。利用这些歹意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID等。总而言之,前端能做的事件它都能做到。XSS可分为反射型,存储型和DOM型。 二、XSS分类反射型XSS:反射型XSS也被称为非持久性XSS,是当初最容易呈现的一种XSS破绽。当用户拜访一个带有XSS代码的URL申请时,服务器端接收数据后处理,而后把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,最终造成XSS破绽。存储型XSS:存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种跨站脚本。容许用户存储数据的WEB应用程序都可能会呈现存储型XSS破绽,当攻击者提交一段XSS代码后,被服务器端接管并存储,当再次拜访页面时,这段XSS代码被程序读取响应给浏览器,造成XSS跨站攻打,这就是存储型XSS。DOM型XSS:传统类型的XSS破绽(反射型或存储型)个别呈现在服务器端代码中,而DOM XSS是基于DOM文档对象模型的一种破绽,所以,受客户端浏览器的脚本代码所影响。 三、XSS破绽利用1.Cookie劫持常见的XSS破绽利用形式有Cookie劫持,个别Cookie中保留了用户的登录凭证。如果Cookie泄露,则能够间接登录进用户的账号。具体的攻打步骤: 1.用户登录2.攻击者坑骗用户拜访带XSS payload的URL3.用户申请攻击者的URL4.在用户浏览器执行近程js,将cookie发送给攻击者5.攻击者利用cookie进入用户账号通过param变量注入xss payload,xss payload加载近程脚本。脚本中将cookie发送到近程服务器。后续也能够在近程服务器的web日志中查看到。在不确定是否存在XSS注入点时,防止Cookie劫持的办法:1.给要害的Cookie植入Httponly标识;2.Cookie与客户端IP绑定。验证给Cookie植入Httponly标识的成果: 2.结构GET与POST申请通过js,让浏览器发动GET、POST申请,实现各种操作。结构GET申请:通过插入图片,图片的src为GET申请的URL。结构POST申请:1.结构form表单,并提交;2.通过XMLHttpRequest发送POST申请。 3.钓鱼通过param变量注入xss payload,xss payload加载近程脚本。脚本中结构一个登录框,表单提交时将账号密码发送到攻击者服务器上。 4.辨认浏览器及插件信息收集用户的浏览器版本信息,扩充攻击面。通过js读取浏览器的userAgent对象辨认浏览器版本,查问navigator.plugins对象获取插件信息。因为破绽环境的限度,包含辨认用户装置软件、查看用户拜访网站、获取用户实在IP、蠕虫等利用形式不做复现。XSS结构和绕过的技巧也不做阐明。可自行查找做理解。 四、XSS的进攻进攻XSS攻打的计划,次要有两种,1.输出查看;2.输入查看。输出查看:对传入参数进行格局校验,并对特殊字符进行过滤或本义。因为输出数据的应用场景不同,过滤或本义可能会影响理论的业务应用。同时XSS攻打产生的地位并不是参数传入的地位,可能存在脱漏。输入查看:对返回给浏览器的输入后果进行HTML实体化编码。对JavaScript输入的用户可控数据进行本义。此外还能够应用Vue、Angular、React等前端开发框架自带的XSS防御机制。DOM型XSS的进攻须要留神,触发点可能不止一个,须要对每个地位都做编码解决。在script标签中产生xss:在document.write输入到html页面产生xss: 五、Self XSSSelf XSS指的是用户本人输出XSS payload,且输入仅本人可见的XSS问题,通常独自的Self XSS是不可利用的,但通过CSRF(跨站申请伪造)、点击劫持等组合攻打就可能把Self XSS利用起来。所以即便是Self XSS也倡议做好修复,防止被组合利用造成危害。 对代码感兴趣的,关注公众号“吴花果的吴花火”,输出”xss“获取xss实例代码的下载链接。

December 5, 2021 · 1 min · jiezi

关于xss:XSS攻击

什么是XSS?Cross-Site Scripting(跨站脚本攻打)简称 XSS,是一种代码注入攻打。攻击者通过在指标网站上注入歹意脚本,使之在用户的浏览器上运行。利用这些歹意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID 等,进而危害数据安全。 产生起因通常页面中蕴含的用户输出内容都在固定的容器或者属性内,以文本的模式展现。攻击者利用这些页面的用户输出片段,拼接非凡格局的字符串,冲破原有地位的限度,造成了代码片段。攻击者通过在指标网站上注入脚本,使之在用户的浏览器上运行,从而引发潜在危险。 如何解决解决办法:通过 HTML 本义,能够避免 XSS 攻打。用escapeHTML将< > & " '转成字符实体 , unescapeHTML将字符实体转成< > & " ' 应用场景:(1)用户在页面中录入(比方输入框) <script>alert(2);</script>, js将该内容提交给后端保留 (2)显示时,后端将字符串返回前端;js接管到之后: 应用escapeHTML,将字符串转为 <script>alert(2);</script>此时,浏览器将能正确解析,因为浏览器接管到实体字符后,转成对应的尖括号等。不应用escapeHTML,浏览器一看到<,便认为是html标签的开始,间接把方才的字符串当脚本执行了,这就是xss破绽。然而,做了 HTML 本义,并不等于居安思危。对于链接跳转,如 <a href=“xxx” 或 location.href=“xxx”,要测验其内容,禁止以 javascript: 结尾的链接,和其余非法的 scheme。 XSS 有哪些注入的办法: 在 HTML 中内嵌的文本中,歹意内容以 script 标签造成注入。在内联的 JavaScript 中,拼接的数据冲破了本来的限度(字符串,变量,办法名等)。在标签属性中,歹意内容蕴含引号,从而冲破属性值的限度,注入其余属性或者标签。在标签的 href、src 等属性中,蕴含 javascript: 等可执行代码。在 onload、onerror、onclick 等事件中,注入不受控制代码。在 style 属性和标签中,蕴含相似 background-image:url(“javascript:…”); 的代码(新版本浏览器曾经能够防备)。在 style 属性和标签中,蕴含相似 expression(…) 的 CSS 表达式代码(新版本浏览器曾经能够防备)。

August 30, 2021 · 1 min · jiezi

关于xss:什么是XSS攻击XSS攻击有哪几种类型

前言:网络安全攻击方式有很多种,其中包含XSS攻打、SQL注入攻打、URL篡改等。那么XSS攻打到底是什么?XSS攻打有哪几种类型?明天小编为大家解说一下。 什么是XSS攻打?XSS攻打又称为跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行。XSS是一种经常出现在Web应用程序中的计算机安全漏洞,是因为Web应用程序对用户的输出过滤有余而产生的,它容许歹意web用户将代码植入到提供给其它用户应用的页面中。 XSS攻打有哪几种类型?常见的XSS攻打有三种:反射型XSS攻打、DOM-based型XSS攻打、存储型XSS攻打。 第一种:反射型XSS攻打反射型XSS攻打个别是攻击者通过特定手法,诱使用户去拜访一个蕴含恶意代码的URL,当受害者点击这些专门设计的链接的时候,恶意代码会间接在受害者主机上的浏览器执行。此类XSS攻打通常呈现在网站的搜寻栏、用户登录口等中央,罕用来窃取客户端Cookies或进行钓鱼坑骗 第二种:DOM-based型XSS攻打客户端的脚本程序能够动静地检查和批改页面内容,而不依赖于服务器端的数据。例如客户端如从URL中提取数据并在本地执行,如果用户在客户端输出的数据蕴含了歹意的JavaScript脚本,而这些脚本没有通过适当的过滤或者消毒,那么应用程序就可能受到DOM-based型XSS攻打。 须要特地留神以下的用户输出源document.URL、location.hash、location.search、document.referrer等。 第三种:存储型XSS攻打攻击者当时将恶意代码上传或者贮存到破绽服务器中,只有受害者浏览蕴含此恶意代码的页面就会执行恶意代码。这意味着只有拜访了这个页面的访客,都有可能会执行这段歹意脚本,因而存储型XSS攻打的危害会更大。此类攻打个别呈现在网站留言、评论、博客日志等交互处,歹意脚本存储到客户端或者服务端的数据库中。

August 17, 2021 · 1 min · jiezi

关于xss:你想学的黑客攻击技术全在这了一篇打包带走

前言:大家好,明天给大家介绍一下,Web平安畛域常见的一些平安问题。 1. SQL 注入SQL注入攻打的外围在于让Web服务器执行攻击者冀望的SQL语句,以便失去数据库中的感兴趣的数据或对数据库进行读取、批改、删除、插入等操作,达到其邪恶的目标。 而如何让Web服务器执行攻击者的SQL语句呢?SQL注入的惯例套路在于将SQL语句搁置于Form表单或申请参数之中提交到后端服务器,后端服务器如果未做输出平安校验,间接将变量取出进行数据库查问,则极易中招。举例如下: 对于一个依据用户ID获取用户信息的接口,后端的SQL语句个别是这样: select name,[...] from t_user whereid=$id其中,$id就是前端提交的用户id,而如果前端的申请是这样: GET xx/userinfo?id=1%20or%201=1其中申请参数id本义后就是1 or 1=1,如果后端不做平安过滤间接提交数据库查问,SQL语句就变成了: select name,[...] from t_user whereid=1or1=1其后果是把用户表中的所有数据全副查出,达到了黑客泄露数据的目标。 以上只是一个极简略的示例,在实在的SQL注入攻打中参数结构和SQL语句远比这简单得多,不过原理是统一的。 2. XSS 攻打XSS全称跨站脚本攻打(Cross Site Scripting),为了与重叠样式表CSS辨别,换了另一个缩写XSS。 XSS攻打的外围是将可执行的前端脚本代码(个别为JavaScript)植入到网页中,听起来比拟拗口,用大白话说就是攻击者想让你的浏览器执行他写的JS代码。那如何办到呢?个别XSS分为两种: 反射型1、攻击者将JS代码作为申请参数搁置URL中,诱导用户点击 示例: http://localhost:8080/test?name=<script>alert("you are under attack!")</script>2、用户点击后,该JS作为申请参数传给Web服务器后端 3、后端服务器没有查看过滤,简略解决后放入网页注释中返回给浏览器 4、浏览器解析返回的网页,中招! 存储型上述形式攻打脚本间接经服务器转手后返回浏览器触发执行,存储型与之的区别在于可能将攻打脚本入库存储,在前面进行查问时,再将攻打脚本渲染进网页,返回给浏览器触发执行。常见的套路举例如下: 1、攻击者网页回帖,帖子中蕴含JS脚本 2、回帖提交服务器后,存储至数据库 3、其余网友查看帖子,后盾查问该帖子的回帖内容,构建残缺网页,返回浏览器 4、该网友浏览器渲染返回的网页,中招! 3. CSRF 攻打CSRF,跨站申请伪造,其核心思想在于,在关上A网站的状况下,另开Tab页面关上歹意网站B,此时在B页面的“教唆”下,浏览器发动一个对网站A的HTTP申请。这个过程的危害在于2点: 1、这个HTTP申请不是用户被动用意,而是B“教唆的”,如果是一个危害较大的申请操作(发邮件?删数据?等等)那就麻烦了 2、因为之前A网站曾经关上了,浏览器存有A下发的Cookie或其余用于身份认证的信息,这一次被“教唆”的申请,将会主动带上这些信息,A网站后端分不清楚这是否是用户实在的志愿 4. DDoS 攻打DDoS全称Distributed Denial of Service:分布式拒绝服务攻打。是拒绝服务攻打的升级版。回绝攻打服务顾名思义,让服务不可用。罕用于攻打对外提供服务的服务器,像常见的: Web服务 邮件服务 DNS服务 即时通讯服务 ......攻击者一直地提出服务申请,让非法用户的申请无奈及时处理,这就是 DoS 攻打。 攻击者应用多台计算机或者计算机集群进行 DoS 攻打,就是 DDoS 攻打。 在晚期互联网技术还没有那么发达的时候,发动DoS攻打是一件很容易的事件:一台性能强劲的计算机,写个程序多线程一直向服务器进行申请,服务器应接不暇,最终无奈解决失常的申请,对别的失常用户来说,看上去网站貌似无法访问,拒绝服务就是这么个意思。 起初随着技术对倒退,当初的服务器早已不是一台服务器那么简略,你拜访一个www.baidu.com的域名,背地是数不清的CDN节点,数不清的Web服务器。 这种状况下,还想靠单台计算机去试图让一个网络服务满载,无异于鸡蛋碰石头,对方没趴下,本人先趴下了。 ...

July 30, 2021 · 1 min · jiezi

关于xss:从一次攻击看前端安全问题

微信公众号:[前端一锅煮]一点技术、一点思考。问题或倡议,请公众号留言。最近网站遭逢了一次 CSRF 攻打,短信调用接口被第三方调用导致收回大量有效短信,起初通过接口签名和 IP 封禁解决。明天就来具体学习下前端畛域的平安问题。 Web 利用中存在很多平安危险,这些危险会被攻击者利用,轻则篡改网页内容,重则窃取网站外部数据,更为严重的则是在网页中植入恶意代码,使得用户受到侵害。常见的安全漏洞如下: XSS 攻打:对 Web 页面注入脚本,应用 JavaScript 窃取用户信息,诱导用户操作。CSRF 攻打:伪造用户申请向网站发动歹意申请。钓鱼攻打:利用网站的跳转链接或者图片制作钓鱼陷阱。HTTP 参数净化:利用对参数格局验证的不欠缺,对服务器进行参数注入攻打。近程代码执行:用户通过浏览器提交执行命令,因为服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的状况下就执行命令。XSSXSS(cross-site scripting 跨域脚本攻打)攻打是最常见的 Web 攻打,其重点是『跨域』和『客户端执行』。 XSS 攻打个别分为两类:Reflected XSS(反射型的 XSS 攻打)和 Stored XSS(存储型的 XSS 攻打)。 Reflected XSS反射型的 XSS 攻打,次要是因为服务端接管到客户端的不平安输出,在客户端触发执行从而发动 Web 攻打。比方:在某购物网站搜寻物品,搜寻后果会显示搜寻的关键词。搜寻关键词填入<script>alert('handsome boy')</script>,点击搜寻。页面没有对关键词进行过滤,这段代码就会间接在页面上执行,弹出 alert。此攻打须要用户触发执行。 进攻措施:不要信赖用户的任何输出,对用户输出全副做过滤解决。本义 <>、过滤掉双引号,单引号,阻止靠元素属性来触发事件执行脚本。 Stored XSS基于存储的 XSS 攻打,是通过提交带有歹意脚本的内容存储在服务器上,当其他人看到这些内容时发动 Web 攻打。个别提交的内容都是通过一些富文本编辑器编辑的,很容易插入危险代码。存在于网页的数据库内,不须要用户触发。 进攻措施:不信赖用户的输出,可对属性、域名做过滤,后端不可信赖前端输出,须要再次过滤。 JSONP XSSJSONP 的 callback 参数十分危险,他有两种危险可能导致 XSS。 callback 参数意外截断 js 代码,特殊字符单引号双引号,换行符均存在危险。callback 参数歹意增加标签(如 <script> ),造成 XSS 破绽。进攻措施:限度 callback 函数名词最长 50 个字符,callback 函数名只容许 [, ],a-zA-Z0123456789_, $,.,避免个别的 XSS,utf-7 XSS等攻打。 ...

July 25, 2021 · 1 min · jiezi

关于xss:CNote01

p->prior->nextmeaning:设p->prior指向q,q为p的前驱节点;那么p->prior->next就等于q->next,p->prior->next就等于q的后驱指针域 scanf()函数从输出流缓冲区中读取值的,而读取时遇到回车(\n)而完结的. 带空格的scanf(" %c")示意要从输出流缓冲区读两个字符,一个给空格,一个给%c. 为什么加空格呢,是因为回车符(\n)也在输出流缓冲区中,所以将\n赋值给空格,以让%c被正确赋值. 否则,不加空格,回车符\n会被赋值给%c. 所以不加空格,字符输出会出问题. *符号有两种含意, 1.在指针未被赋值或初始化时,作为"指针说明符" 2.在指针曾经有指向后,作为"取内容符" 指针的定义有两种模式: int a=101;int *p;p=a;2.int a=101;int p=&a;

July 22, 2021 · 1 min · jiezi

关于xss:XSS最强知识体系漏洞万字总结

一.XSSI破绽原理同源策略 同源策略是Web应用程序平安模型中最根本也是最外围的策略。 当初所有反对JavaScript的浏览器都会应用这个策略。 所谓同源是指,域名,协定,端口雷同。 同源策略规定,不同源的客户端脚本(javascript、ActionScript)在没明确受权的状况下,不能读写对方的资源。 此策略可避免一个页面上的歹意脚本通过该页面的Document Object Model拜访另一网页上的敏感数据。 为了满足同源策略,浏览器对不同拜访行为进行了限度,限度规定个别如下: XSSI原理 XSSI破绽全称为跨站脚本蕴含破绽,攻击者通过应用<script>标签(所有带src或href属性的标签以及局部其余标签能够跨域)跨域蕴含特定文件/页面 能够窃取合乎JavaScript格局的文件中的敏感信息。攻击者会将可泄露用户信息的JavaScript文件蕴含进来。 这里获取的指标数据,即敏感信息,大抵分为几类: 认证凭据CSRF token用户个人信息等XSSI、XSS、CSRF的区别 XSS 攻打是指攻击者在网站上注入歹意的客户端代码,通过歹意脚本对客户端网页进行篡改,从而在用户浏览网页时,对用户浏览器进行管制或者获取用户隐衷数据的一种攻击方式。 攻击者对客户端网页注入的歹意脚本个别包含 JavaScript,有时也会蕴含 HTML 和 Flash。 有很多种形式进行 XSS 攻打,但它们的共同点为:将一些隐衷数据像 cookie、session 发送给攻击者,将受害者重定向到一个由攻击者管制的网站,在受害者的机器上进行一些歹意操作 CSRF(跨站申请伪造),指假冒用户发动申请(在用户不知情的状况下),实现一些违反用户志愿的申请(如歹意发帖,删帖,改明码,发邮件等)通常来说CSRF是由XSS实现的,所以CSRF时常也被称为XSRF[用XSS的形式实现伪造申请]。 XSS更偏差于代码实现(即写一段领有跨站申请性能的JavaScript脚本注入到一条帖子里,而后有用户拜访了这个帖子,这就算是中了XSS攻打了),CSRF更偏差于一个攻打后果,只有发动了冒牌申请那么就算是CSRF了 而XSSI(跨站申请蕴含)是XSS的一种模式,即浏览器不会阻止网页加载图像和文字等资源,这些资源通常托管在其余域和服务器。 例如,如果abc银行有一个脚本用于读取用户的私人账户信息,攻击者能够在其本人的歹意网站蕴含这个脚本,当abc银行的客户拜访攻击者的网站时,攻击者就能够从abc银行的服务器提取用户信息。 从外表上看,XSSI和CSRF看起来很类似,因为在这两种状况下,申请都是从歹意页面发送到另一个域的,并且在两种状况下,申请都是在登录用户的上下文中执行的。 要害区别在于指标。 在CSRF中,攻击者心愿在受害者页面内执行歹意操作,例如在网上银行应用程序中进行转帐。 在XSSI中,攻击者想要跨域泄露数据,以便再执行攻打。 与jsonp劫持的关系 jsonp劫持等利用js对插入函数进行插入恶意代码,将敏感数据发送到攻击者的服务器,实际上就是对存在jsonpjack持守入侵的网页进行发动一次申请,让其受害者客户端执行插入的恶意代码 而xssi次要获取服务器为每个客户端生成的动静js文件中的敏感数据,达到信息定向的目标,这种信息可能包含用户的登录凭证,重大可导致任意用户账号接管。 二.XSSI破绽利用以及POCXSSI通常辨别为三种状况。 然而利用形式是类似甚至是雷同的(就像反射与存储的XSS)。咱们能够将三种状况辨别如下: 动态JavaScript(惯例XSSI) 间接拜访该js即可获取敏感信息,但个别都是攻打认证后蕴含敏感信息的js 假如敏感内容设定在一个全局变量中,如上面的事实例子: var privateKey ="-----BEGIN RSA PRIVATE KEY-----....-----END RSA PRIVATE KEY-----", keys =[{ name:'Key No 1', apiKey:'0c8aab23-2ab5-46c5-a0f2-e52ecf7d6ea8', privateKey: privateKey },{ name:'Key No 2', apiKey:'1e4b8312-f767-43eb-a16b-d44d3e471198', privateKey: privateKey }];利用POC: ...

July 13, 2021 · 2 min · jiezi

关于前端:Web-安全简明入门指南

Web 平安曾经是 Web 开发中一个重要的组成部分,而许多程序猿往往心愿专一于程序的实现,而疏忽了信息安全的本质。如果没有谨严地思考到信息安全问题,等出了乱子之后反而会造成更重大的损失。所以要在开发网络应用时更重视 Web 平安,甚至致力成为一个白帽黑客。 常见 Web 信息安全一般来说 Web 平安须要合乎三点平安因素: 保密性:通过加密等办法确保数据的保密性完整性:要求用户获得的材料是残缺而不可被篡改的可用性:保障网站服务的继续可拜访性以下是常见的影响 Web 平安的攻打伎俩: 1. SQL注入应用歹意的 SQL 语法去影响数据库内容: // “--” 是 SQL 语句的正文符号/user/profile?id=1";DROP TABLE user--SELECT * FROM USER WHERE id = "1"; DROP TABLE user--用户登录: // password" AND 1=1-- SELECT * FROM USER WHERE username = "Mark"; AND 1=1-- AND PASSWORD="1234"简略的防备伎俩:不信赖用户输出的数据,确保用户输出必须通过查看,目前许多成熟的 Web 框架都反对ORM 服务,大部分都根本防备了 SQL 注入。 2. XSS(Cross-Site Scripting)XSS 也很容易将恶意代码植入到网页,让看到网页的用户受到烦扰,常见的重灾区包含BBS、留言板等。实际上 XSS 的概念很简略,通过表单输出建设一些歹意网址、歹意图片网址或把 JavsScript 代码注入到 HTML中,当用户浏览页面时就会被触发。 <IMG SRC="" onerror="alert('XSS')">更多对于XSS材料能够参考 XSS Filter Evasion Cheat Sheet(https://www.owasp.org/index.p...)。另外也有中文版(链接是乌云镜像备份,顺便思念一下) ...

March 26, 2021 · 1 min · jiezi

关于xss:CSRF攻击详解

一、csrf简介Cross-site request forgery,跨站申请伪造,通常缩写为CSRF或者XSRF。 上面get和post申请攻打的前提都是假如网站A存在csrf破绽以及用户已登录网站A。 二、csrf之get申请攻打发动get申请攻打比较简单,只需通过img标签即可。 因为受同源策略限度,不能通过ajax来发动get申请。 Demo验证代码: // src的值就是网站A下的get申请<head> <meta charset="utf-8"> <title>csrf之get申请攻打</title></head><body> <img src="http://xxx"></body>成果:用户关上攻击者网站B,主动发动get申请,状态码是200示意胜利: 通过抓包具体查看,申请带上了cookie登录态,响应也是失常的: 三、csrf之post申请攻打相比之下,get申请的危害没有post申请挫伤大,但想要发动post申请攻打,就没那么容易实现。 首先咱们晓得,在网站B是不能通过ajax发动网站A的post申请的,因为同源策略限度了。但须要留神的是,同源策略只是限度了XMLHttpRequest和Fetch API,但html的form标签则不受同源策略限度。同样,下面get申请的img标签也不受同源策略。 失常form表单验证代码: <head> <meta charset="utf-8"> <title>csrf-post</title></head><body> <form id="form" action="http://xxx" method="POST" target="iframe1"> <input type="text" name="id" value="70"> <input type="text" name="biz_module_id" value="[15]"> <input type="text" name="deploy_path" value=""> <input type="text" name="description" value="test"> <input type="text" name="name" value="config.txt"> <input type="text" name="version" value="1"> </form> <iframe name="iframe1"></iframe> <script> document.getElementById('form').submit() </script></body>成果: 论断:很显著申请是不胜利的。但能把网站A的登录态带过来,所以算是胜利了一部分。比照网站A下的post申请,发现数据格式不一样。上图的是Form Data,网站A的是Request Payload,如下图所示: 剖析:form申请的数据格式跟enctype属性有关系,默认的是application/x-www-form-urlencoded,此时就是Form Data。编码类型总共三种(参考),还有两种是:multipart/form-data和text/plain。前者是上传文件用的,后者用的比拟少。但正是通过text/plain来将数据格式改为Request Payload。 text/plain的form表单再次验证代码: // 在下面的代码的根底上,把form标签新增enctype属性即可<form id="form" action="http://xxx" method="POST" target="iframe1" enctype="text/plain">成果: 论断:胜利将数据格式改为Request Payload了,但为啥接口仍然报错?再认真比照下网站A的失常申请,可发现网站A那边是JSON格局,但咱们这边不是JSON,就是纯文本加换行的一个格局,这样必定不会胜利的。 剖析:那有什么好方法?只能持续对form表单的参数进行深刻开掘了。form表单的参数就是input标签等的name和value组成的一些列参数,那可否只用一个input来把所有参数都拼接起来? 通过屡次验证,是能够拼接的。 再次验证form的参数代码: // 在下面的代码的根底上,把input改为如下所示:<form id="form" action="http://xxx" method="POST" target="iframe1" enctype="text/plain"> <input type="text" name='{"id":70,"biz_module_id":[15],"deploy_path":"","description":"test","name":"config.txt","version":"' value='123"}"'></form>成果: 论断:胜利了! 补充阐明1 数据格式如果不是Request payload,而是Form Data,则可间接用form表单来发申请,不必再减少下面2和3的办法。一、csrf简介Cross-site request forgery,跨站申请伪造,通常缩写为CSRF或者XSRF。 上面get和post申请攻打的前提都是假如网站A存在csrf破绽以及用户已登录网站A。 二、csrf之get申请攻打发动get申请攻打比较简单,只需通过img标签即可。 因为受同源策略限度,不能通过ajax来发动get申请。1. Demo验证代码: // src的值就是网站A下的get申请<head> <meta charset="utf-8"> <title>csrf之get申请攻打</title></head><body> <img src="http://xxx"></body>成果:用户关上攻击者网站B,主动发动get申请,状态码是200示意胜利: 通过抓包具体查看,申请带上了cookie登录态,响应也是失常的: 三、csrf之post申请攻打相比之下,get申请的危害没有post申请挫伤大,但想要发动post申请攻打,就没那么容易实现。 首先咱们晓得,在网站B是不能通过ajax发动网站A的post申请的,因为同源策略限度了。但须要留神的是,同源策略只是限度了XMLHttpRequest和Fetch API,但html的form标签则不受同源策略限度。同样,下面get申请的img标签也不受同源策略。 ...

March 17, 2021 · 1 min · jiezi

关于csrf:译永久改变互联网的MySpace蠕虫

萨米不想成为每个人的英雄。他甚至都不想要新敌人。 然而因为几行奇妙的代码,在不到一天的工夫内,他成为了过后最风行的在线社交网络上超过一百万人的“英雄”和“敌人”,我的空间。 大概在2005年10月4日午夜,在洛杉矶,过后19岁的黑客Samy Kamkar开释了起初被称为“ Samy蠕虫”的病毒,它可能是传播速度最快的计算机病毒。一次,这种病毒永远扭转了网络安全的世界。 Kamkar于16岁高中毕业,并在17岁时创建了一家名为Fonality的软件守业公司。他说,他只是想感动他的技术敌人,仅此而已。一切都在一周前开始,坎卡尔通知我。过后,MySpace为用户提供了许多自定义配置文件的自在,从而容许应用HTML代码,这导致了色调丰盛,而且查看配置文件通常很麻烦。 “一旦我可能做到这一点,我意识到我实际上能够在页面上做任何事件。” 然而,并非MySpace上的所有内容都是齐全可定制的。例如,用户只能上传12张照片。有方法解决吗?Kamkar他开始到处游荡,试图看看他是否能够坑骗MySpace做网站不应该让用户做的事件。他很快找到了办法并上传了13张照片。 当波及到“关系”字段时,用户也只有多数抉择。有一个带有规范选项的下拉菜单:已婚,独身,恋爱中,还有其余几个选项。过后有个女朋友的坎卡尔(Kamkar)心愿可能抉择“亲密关系”。随着更多的黑客入侵,他也这样做了。 “当我可能做到这一点时,我意识到我实际上能够在页面上做任何事件,”他通知母板,回忆起那个重要的夜晚。 SAMY KAMKAR在洛杉矶家中的计算机上工作。图片:主板 在接下来的一周中,Kamkar编写了一个脚本,该脚本对于任何其余用户都是不可见的,并将迫使所有拜访他的个人资料的人将他增加为敌人。该脚本还将在该人的个人资料的“我的英雄”类别下增加一行:“但最重要的是,萨米是我的英雄。” Kamkar意识到,如果脚本只对页面的访问者无效,那么他将涉及的人很少,因而,他对脚本进行了编程,使其也能够复制到访问者本人的个人资料上。 那时,他制作了一种自流传蠕虫。 他通知我:“我认为一个月内我会失去100或200个敌人。” “其中有些人会埋怨,我将其删除,仅此而已。没什么大不了的。” 第二天早上,他醒来,有200个敌人申请。那是他“吓坏了”的时候,因为蠕虫的传播速度比他设想的要快。一小时后,申请数量减少了一倍,而后呈指数级增长。那时,卡姆卡说他以匿名形式向MySpace发送电子邮件,揭示他们该蠕虫以及一种阻止蠕虫的办法,但他没有回音,直到明天,他依然“不晓得”是否有人真正看到了该电子邮件。 到下午1:30,他曾经积攒了超过2500个敌人,并收到了6,000多个申请。 坎卡尔在当晚发表的博客文章中写道:“这曾经失控了。人们向我发消息说,因为我的名字被列入了他们的'英雄'名单,他们曾经举报我为'黑客'。” 产生了 “显然,人们之所以怄气,是因为他们从敌人列表中删除了我,查看了其他人的页面甚至本人的页面,并立刻被我再次感化。我统治。” 他补充说:“我心愿没人起诉我。” 几个小时后,Kamkar在Chipotle买了墨西哥卷饼,而后回家再次查看他的MySpace个人资料。那时他有近一百万个敌人的申请。 KAMKAR的MYSPACE个人资料的屏幕截图,摄于2005年10月5日。图片:SAMY KAMKAR 他在博客中写道:“这是官网的。我很受欢迎。” 在MySpace解体之前的几分钟,这个数字攀升至超过一百万。该公司必须使站点脱机以查明产生了什么并革除蠕虫。 坎卡尔通知我:“我感到十分蹩脚。我真的很惆怅。” 然而那时他什么也做不了-一旦开释了蠕虫,就曾经太迟了,因为蠕虫会自行流传。大概两个小时后,该站点恢复正常。他的个人资料已被删除。 KAMKAR在2010年于拉斯维加斯举办的BLACK HAT平安会议上发表演讲。 事件产生几个月后,Myal负责平安总监,库纳尔·阿南德(Kunal Anand)说,在萨米蠕虫病毒袭击时,该公司“简直没有平安团队”,并且“不晓得该怎么办”。 没有人能看到像Samy的蠕虫一样的货色。这是一个“行业分水岭的时刻,” Anand通知我。 网络安全专家,WhiteHat Security公司的创始人Jeremiah Grossman说,Samy蠕虫是“该行业中的每个专家都在期待的时刻之一”。 Kamkar的蠕虫只管迅速流传,但最终还是有害的:所做的只是与他成为敌人,并在感染者的个人资料上加上了几句话。然而,如果卡姆卡已经是罪犯,或者怀有更刁滑的用意,那么他本能够接管他们的账目。正如格罗斯曼(Grossman)所说,坎卡尔(Kamkar)“有能力去做他想做的任何事件”。 年老的黑客应用的技术称为跨站点脚本攻打,通常缩写为XSS,攻击者将恶意代码注入网站,诱骗该站点以及用户的浏览器来执行代码。据格罗斯曼称,理解网络安全的人们都晓得,能够像坎卡一样攻打大多数站点,然而直到Samy蠕虫之前,没有人认真对待这一威逼。 “(萨米)永远扭转了这个行业。” 格罗斯曼在电话中通知我:“过后,这是一种十分令人赞叹的破绽。咱们晓得每个站点都存在该破绽,但没有人真正展现出您能够应用该破绽做什么。” “萨米做到了,他永远扭转了这个行业。” Grossman认为,在产生Samy蠕虫时,80%到90%的网站容易受到相似攻打。这个问题引起了人们的极大关注,以至于Open Web Application Security Project致力于为站点创立API,以使用户能够应用其页面上的代码而不会裸露于XSS破绽(它们称为AntiSamy Project)。 依据WhiteHat的平安机构2015年收集的数据,十年后,只有47%的网站可能具备雷同的破绽。如果没有Kamkar蠕虫引起的留神,兴许这依然是一个更广泛的问题。 在将来的几年中,网站和浏览器将加强其针对跨站点脚本攻打的安全性,然而依然存在一些值得注意的攻打。例如,在2013年,因为相似的破绽,几个Yahoo用户的电子邮件帐户被劫持。去年,黑客在Tweetdeck中发现了一个XSS谬误,使他们可能强制厌恶的弹出窗口。往年早些时候,因为XSS破绽,能够用一个正文来接管WordPress博客。 只管他的用意是有害的,并且他发表的博客文章解释了为什么他发射了Samy蠕虫,但Kamkar最终还是在法律上遇到了麻烦。 在他开释蠕虫病毒六个月后,特勤局和LAPD的电子立功工作组一起取得了搜查他的公寓和办公室的命令。当局查封了他的笔记本电脑,三台台式计算机和其余电子设备,例如硬盘。依据加利福尼亚州的刑法,洛杉矶地区检察官正在追捕他,指控他犯有计算机犯罪,特地是用病毒感染计算机系统。 坎卡尔回顾说:“这有点吓人。” “我什至没有高中文凭,所以我真的很放心他们是否试图从我身边夺走计算机。计算机是我惟一的货色。” “计算机是我惟一领有的货色。” 整整一年,卡姆卡尔的律师和检察官来回走访,切磋辩诉交易。Kamkar从未被捕,最终认罪,被判处三年缓刑,简直没有计算机拜访权限。坎卡尔说,他只容许应用一台在当局注册的计算机,而不能拜访互联网。 他依然可能在公司的起步阶段负责治理职务,甚至还被邀请加入无关蠕虫的会议和演讲。在2007年,他在OWASP&WASC AppSec会议上遇到了格罗斯曼,格罗斯曼和他的敌人罗伯特·汉森(Robert Hansen)在那儿呈现了定制的T恤,下面写着“萨米是我的英雄”。(相似的衬衫依然能够在线购买。) Grossman通知我,因为他在网络安全畛域的影响,Kamkar加入相似流动时无需领取任何费用。 他说:“咱们在一起10年后,我认为他不用为喝酒付费。” 蠕虫感化三年后,2008年,卡姆卡尔(Kamkar)回到法院,并解除了缓刑。坎卡尔回顾说,他所做的第一件事是返回圣莫尼卡苹果商店并购买笔记本电脑。而后,他去了最近的星巴克,将其关上并连贯到互联网。 然而离线三年后,“我什至都不晓得要去哪里,”他说。因而,他拜访了几个网站,而不是MySpace,他笑着说,他们花了十分钟在互联网上,而后去看了一些敌人。 Kakmar说,在Samy蠕虫之前,他“十分外向和害羞”,因而“来到计算机的三年实际上对我来说真的很无益,对于始终始终应用计算机的人来说,它使我能够做其余事件。” 然而,一旦回到网上,Kamkar就有了一些能够破解的新货色和一些新技术的想法。他在2010年在拉斯维加斯驰名的黑客大会DEF CON 上的首次演讲中展现了其中的一些产品。 从那以后,他来到了本人的守业公司,并进行黑客入侵,揭发Google,Apple和Microsoft如何跟踪客户,以及创立主动劫持无人机,解锁汽车和车库门的设施,所有这些都是以促使公司进入更重视安全性并爱护客户。他的杰出体现,以及即便使在行人士也能轻松实现黑客和信息安全的天才窍门,使他在黑客社区中妇孺皆知。 明天,如果他能回到过来,Kamkar说他可能不会开释该蠕虫,只管远离计算机三年是一种踊跃的经验,而蠕虫是他成名的号召。 然而,因为Samy蠕虫,互联网的情况可能会更好。因而,从某种意义上说,萨米可能依然是英雄。 原文:https://www.vice.com/en_us/ar...

March 17, 2021 · 1 min · jiezi

关于前端:XSS系列之3种类型

一、概述Cross-site scripting,简称XSS,跨站脚本攻打。XSS是一种网站应用程序的安全漏洞攻打,是代码注入的一种。它容许歹意用户将代码注入到网页上,其余用户在浏览网页的时候,就会受到影响。 二、反射型XSS - Reflected XSS用户在页面的输出,通过http申请发送到服务端,服务端解决后,把用户输出原封不到返回到浏览器,浏览器也没做解决间接把用户输出显示到页面种。 1 示例:代码 // 服务端(koa2)router.get('/search', async (ctx, next) => { let req = ctx.request ctx.state = { title: 'xss', word: req.query.word } ctx.body = req.query.word ? req.query.word : ''})成果: 但当在URL输出<script>alert('xss')</script>的时候,就被攻打了。 个别多产生在服务端渲染(如下面的示例)以及浏览器端通过js间接渲染到页面($('#search').html(res.data))的状况 三、存储型XSS - Stored XSS相比反射型,存储型则是把用户输出存储起来了。可想而知影响范畴大很多。 这里就不演示了,有趣味可看看驰名的萨米XSS蠕虫攻打([[译]永恒扭转互联网的MySpace蠕虫](http://yanchengxiang.com/?p=433))。 该蠕虫用JavaScript实现,利用贮存型XSS破绽流传。它在每个被感化的用户页面显示一行字串“but most of all, samy is my hero”,并将本人复制在该用户页面。当新的用户点击被感化的用户页面时,就会触发该程序在用户的浏览器中运行,导致蠕虫进一步流传,在该新用户主页上再度复制。在短短20小时内,从2005年10月4日公布起,超过一百万的用户都运行了该程序。这让该作者的账户在该社交网络上的关注量指数级增长,并让萨米蠕虫成为历史上传播速度最快的计算机病毒。四、基于DOM的XSS - DOM Based XSS反射型和存储型都必须通过服务端,但基于DOM的XSS则不必,间接在浏览器端攻打。 1 示例:代码 <head> <meta charset="utf-8"> <title>dom based xss</title></head><body> <script> document.write("正在拜访的网站是: " + decodeURIComponent(location.href)); </script></body>成果: 但当在URL输出#<script>alert('xss')</script>的时候,就被攻打了。 这种就是间接在浏览器端发动的攻打,没通过服务端。

March 17, 2021 · 1 min · jiezi

关于xss:js-xss及注入攻击的防范注入攻击过滤器xssfilterjs

在前端开发中总是认为本人实现了业务代码满足了用户需要,却不知web存在的许多安全隐患,如各种的注入攻打,xss跨站脚本攻打,跨域申请伪造,以及之前提到的不平安的http,其余等等。自己写了一个对于注入攻打能够过滤注入敏感关键字的库xssfilter-js,如果感觉好的能够start,也心愿您能参加奉献 injectFilter.js注入攻打过滤器(兼容IE)-实现过滤文本或DOM元素中的敏感关键字避免XSS、命令注入、sql注入攻打 大小:4KB NPM 地址:https://www.npmjs.com/package... Github :https://github.com/booms21/in... Docs文档:装置:npm install xssfilter-jsoptions 配置项://创立一个InjectFilter对象,可传入options配置对象var inf = new InjectFilter(options);options.tokens = 可增加额定的自定义过滤字符,对象类型键值对{'须要替换的指标字符':'字符1'} key为须要替换的字符,value为想要将指标字符替换成的字符。options.xss = true; 默认为true。 需为布尔值,是否启用过滤xss注入options.command = true;默认为true。 需为布尔值,是否启用过滤command(命令注入)options.sql = true;默认为true。 需为布尔值,是否启用过滤sql注入注:命令和sql将过滤成对应的‘全角’文本(如select 、delete from、ping )Demo:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="injectFilter.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script></head><body> <div id='aa' onclick="javascript:alert('hello world')">) or 1=1</div></body><script> var inf = new InjectFilter({tokens:{'or':'|||'}}); $('#aa').html(inf.filter(document.getElementById('aa')))</script></html>ES6: import injectFilter from './injectFilter';

February 27, 2021 · 1 min · jiezi

关于xss:XSS-防护-99的人知道转义过滤50的人知道-httponly但是只有1的人知道它

避免xss 99%的都晓得要做标签过滤,和标签属性过滤,50%晓得非标签内容本义,40%晓得httponly,10%的人晓得 waf,只有1%的人晓得它。周末尝试用跑路技巧来强行引出 CSP ,故事有点牵强,本想大家都一起留言说如何解决这种 self-xss 的问题,然而成果不是很好,这里我本人回应下吧~~ 对于这种”固执型“存储内容,存在更高权限的用户编辑其他人低权限用户的内容的状况。上面这个计划应该能在肯定水平上解决问题。 当然 csp 和 httponly 的指定也都是服务端输入的。waf 是一层能够帮忙咱们拦挡掉一些攻打代码的网络防火墙,属于云产品领域,大家能够自行搜寻相干云产品。 明天次要和大家分享学习下 CSP (Content Security Policy)的常识,CSP 里定义的内容有很多,不仅能够避免被 XSS 还有被 iframe 或者 iframe 援用等 如果咱们提供的是一个存储型的服务,比方博客。案例 http://mengkang.net/demo/csp/... <html><header> <title></title></header><body><div id="blog"> <script> alert(document.cookie); </script></div></body></html>也就是说"#blog"外面的内容是不可信的,一方面要做好展现时的过滤,如果咱们没做好过滤,下面的 js 就会执行;另一方面,咱们也不能随便批改用户的内容,所以即便展现时过滤了,而原始内容不能批改,当编辑用户的内容时,仍然会触发xss,也就是self-xss,这次要攻打的就是有编辑其他人内容的人。 CSP 次要是为了解决跨站脚本攻打和数据注入攻打,它的外围原理是在服务端渲染页面的时候 http header 头里带上 CSP 协定,协定外面有一个nonce(服务端随机生成的码,不须要存储),而后页面须要执行的 js 必须也必须带上该nonce。 拦挡攻打案例 http://mengkang.net/demo/csp/... <?php$nonce = md5(uniqid());$policy = "script-src 'nonce-" . $nonce . "';";header("content-security-policy:". $policy);?><html><header> <title></title></header><body><div id="blog"> <script> alert(document.cookie); </script></div></body></html>这样,用户写的博客外面的 js 就不会被执行了。并且管制台上会有报错记录 Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'nonce-be6737d35f2c558943dae9ad44c369ee'". Either the 'unsafe-inline' keyword, a hash ('sha256-0FWdMKk2PWuytGHwpB/r+HwqVTWZoSWX/M+OKSueWHI='), or a nonce ('nonce-...') is required to enable inline execution.然而如果页面有一些咱们本人开发的 js 要执行怎么办? ...

January 27, 2021 · 2 min · jiezi

关于xss:Springboot实现XSS漏洞过滤

背景前阵子做了几个我的项目,终于开发结束,进入了测试阶段,信念满满将我的项目部署到测试环境,而后做了平安测评之后.....                  (什么!你居然说我代码不平安???) 而后测出了Xss破绽平安的问题 解决方案场景:能够在页面输入框输出JS脚本,攻击者能够利用此破绽执行歹意的代码! 问题演示 所以咱们要对于前端传输的参数做解决,做对立全局过滤解决 既然要过滤解决,咱们首先须要实现一个自定义过滤器 总共蕴含以下四局部 XssUtilXssFilterAutoConfig XssHttpServletRequestWrapper XssStringfJsonDeserializer 最初咱们须要在全局过滤器中应用咱们实现的Xss自定义过滤器 代码实现XssFilterAtuoConfig实现代码 import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.module.SimpleModule;import net.greatsoft.overallbudget.filter.SimpleCORSFilter;import org.springframework.boot.context.embedded.FilterRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;/** * Created by wjy on 2020/11/5. * xss 主动配置类 */@Configurationpublic class XssFilterAtuoConfig { /** * 注册自定义过滤器 * @return */ @Bean public FilterRegistrationBean xssFiltrRegister() { FilterRegistrationBean registration = new FilterRegistrationBean(); //设置零碎过滤器 (setFilter就是你所定义的过滤器filter类) registration.setFilter(new SimpleCORSFilter()); //过滤所有门路 registration.addUrlPatterns("/*"); //过滤器名称 registration.setName("XssFilter"); //优先级 registration.setOrder(1); return registration; } /** * 过滤JSON数据 * @return */ @Bean @Primary public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() { SimpleModule module = new SimpleModule(); //自定义序列化过滤配置(XssStringJsonDeserializer), 对入参进行转译 module.addDeserializer(String.class, new XssStringJsonDeserializer()); // 注册解析器 ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json().build(); objectMapper.registerModule(module); return new MappingJackson2HttpMessageConverter(objectMapper); }} ...

January 22, 2021 · 3 min · jiezi

关于xss:XSS跨站脚本攻击与防御

在此记录XSS的相干常识 XSS的具体介绍能够查看 XSS跨站脚本攻打与进攻// 对用户输出的内容进行转码/*1.用浏览器外部转换器实现html转码*/export function htmlEncode (html){ // 1.首先动态创建一个容器标签元素,如DIV let temp = document.createElement ("div"); // 2.而后将要转换的字符串设置为这个元素的innerText(ie反对)或者textContent(火狐,google反对) (temp.textContent !== undefined ) ? (temp.textContent = html) : (temp.innerText = html); // 3.最初返回这个元素的innerHTML,即失去通过HTML编码转换的字符串了 const output = temp.innerHTML; temp = null; return output;}/*2.用浏览器外部转换器实现html解码*/export function htmlDecode (text){ // 1.首先动态创建一个容器标签元素,如DIV let temp = document.createElement("div"); // 2.而后将要转换的字符串设置为这个元素的innerHTML(ie,火狐,google都反对) temp.innerHTML = text; // 3.最初返回这个元素的innerText(ie反对)或者textContent(火狐,google反对),即失去通过HTML解码的字符串了。 const output = temp.innerText || temp.textContent; temp = null; return output;}

December 1, 2020 · 1 min · jiezi

关于xss:字符串进行转义防止xss攻击

字符串进行本义,避免xss攻打对于更多日常应用的公共类的操作方法,能够关注下小滑轮网站 /** *. 本义html(防XSS攻打) *. @param str 字符串 */function escapeHTML (str) { return str.replace( /[&<>'"]/g, tag => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', "'": '&#39;', '"': '&quot;' }[tag] || tag) );}咱们小滑轮网站上还有其余字符串的工具函数 去除空格字符大小写转换下划线格局字符串转为驼峰格局驼峰格局字符串转为下划线格局能够去看看,心愿对你的开发有帮忙~

September 27, 2020 · 1 min · jiezi

关于xss:Content-Security-Policy

Content Security Policy(内容安全策略,简称csp)用于检测并阻止网页加载非法资源的安全策略,能够加重xss攻打带来的危害和数据注入等攻打。本文讲述的内容次要有如何应用csp和业务接入csp流程这两局部。 简介csp次要工作是定义一套页面资源加载白名单规定,浏览器应用csp规定去匹配所有资源,禁止加载不合乎规定的资源,同时将非法资源申请进行上报。 csp作用:加重网页被xss攻打后所受到的危害。实际上csp是在xss攻打产生后才起作用,阻止申请注入的非法资源,csp并不是间接阻止xss攻打的产生。 应用形式csp次要有两种应用形式,别离是设置响应头Content-Security-Policy和应用meta标签。 响应头在网页html申请的响应头中进行定义,定义形式: Content-Security-Policy: 指令1 指令值1 指令值2; 指令2 指令值1;例子: Content-Security-Policy: srcipt-src 'self' *.test.com'; img-src: https: data:;前面会重点解说csp中具体存在哪些指令和指令值,能够在定义规定中看到具体的介绍。 meta在网页html文件中进行定义,定义形式: <meta http-equiv="Content-Security-Policy" content="指令1 指令值1 指令值2; 指令2 指令值1;">例子: <html> <head> <meta http-equiv="Content-Security-Policy" content="srcipt-src 'self' *.test.com'; img-src: https: data:;" > </head> <body>...</body></html>留神:因为html文档是从上至下进行解析,因而,meta尽量写在最后面,保障可能对所有资源申请进行束缚。成果csp规定匹配到的资源都可能失常申请,一旦有非法资源申请,浏览器就会立刻阻止,阻止的成果如下 定义规定csp规定内容次要由指令和指令值这两局部形成,指令用于定义资源类型,指令值用于定义资源申请地址规定。 例子: Content-Security-Policy: srcipt-src 'self' *.test.com';下面csp规定中,script-src是脚本资源加载指令,'self'和*.test.com是指令值,当加载js脚本的时候,只有满足指令值定义的规定能力失常加载。 指令指令阐明示例default-src定义所有类型资源默认加载策略,当上面这些指令未被定义的时候,浏览器会应用default-src定义的规定进行校验'self' *.test.comscript-src定义JavaScript资源加载策略'self' js.test.comstyle-src定义款式文件的加载策略'self' css.test.comimg-src定义图片文件的加载策略'self' img.test.comfont-src定义字体文件的加载策略'self' font.test.comconnect-src定义XHR、WebSocket等申请的加载策略,当申请不合乎定义的规定时,浏览器会模仿一个响应状态码为400的响应'self'object-src定义<object> <embed> <applet>等标签的加载策略'self'media-src定义<audio> <video>等多媒体html标签资源加载策略'self'frame-src【已废除】定义iframe标签资源加载策略(新指令:child-src)'self'sandbox对申请的资源启用sandbox,相似于iframe中的sandbox性能allow-scriptsreport-uri定义上报地址。当有资源被拦挡的时候,浏览器带着被拦挡的资源信息申请这个uri。(只在响应头中定义能力失效)https://csp.test.com/reportchild-src【csp2】定义子窗口(iframe、弹窗等)的加载策略'self' *.test.comform-action【csp2】定义表单提交的源规定'self'frame-ancestors【csp2】定义以后页面能够被哪些页面应用ifram、object进行加载'self'plugin-types【csp2】定义页面容许加载哪些插件 指令值指令值阐明示例*所有内容都失常加载img-src *;'none'不容许加载任何资源img-src 'none';'self'容许加载同源资源img-src 'self';'unsafe-inline'容许加载inline内容(例如:style、onclick、inline js、inline css等)srcript-url 'unsafe-inline';'unsafe-eval'容许加载动静js代码(例如:eval())script-src 'unsafe-eval';http:容许加载http协定资源img-src http:;https:容许加载https协定资源img-src https:;data:容许应用data协定(css中加载base64图片应用的就是data协定)img-src data:;域名容许加载该域名下所有https协定资源img-src test.com;门路容许加载该门路下所有https协定资源img-src test.com/img/;通配符*.test.com容许加载子域名下所有https协定的资源(任意子域名);*://*.test.com:*这个匹配逻辑原意是任意协定、任意子域名、任意端口,但在理论测试过程中发现这个指令值没有任何作用img-src *.test.com;理论业务开发后面咱们理解了csp根本用法,接下来讲述下业务接入csp流程。因为浏览器会禁止加载违反csp规定的资源,因而,咱们须要对csp进行一系列验证后,能力正式上线,上面将带着大家一步一步的实现业务csp规定的部署。 ...

September 4, 2020 · 1 min · jiezi

关于xss:XSS跨站点脚漏洞概述

XSS(Cross Site Scripting)跨站点脚本是一种代码注入攻打,攻击者利用Web站点的代码破绽,在用户拜访的网页时运行植入的歹意JS脚本,从而影响用户拜访或窃取用户信息。 XSS分类依据歹意脚本的触发形式,XSS攻打可分成三种模式,别离是反射型,存储型和DOM型。 反射型XSS:客户端的提交的内容中带XSS脚本,服务器端处理不当,间接在页面上输入内容,导致恶意代码被执行。例如:歹意用户在页面中的文本框中输出脚本代码,表单提交后,服务器程序未对文本框数据进行本义解决,间接打印到页面上,页面返回到客户端展现时,触发脚本执行。存储型XSS:攻击者向零碎中注入恶意代码,恶意代码在数据库中保留,用户拜访从数据库中读取的内容生成的页面时,触发恶意代码执行。例如:歹意用户在论坛发帖内容中蕴含脚本代码,发帖内容提交后保留到服务器数据库中,当其余用户浏览此帖子时,从数据库中读取帖子内容展现,帖子内容触发脚本在浏览器中执行。DOM型XSS:反射型XSS相似,区别在于带恶意代码的数据不通过服务器端解决,间接由客户端JS脚本解决(DOM树操作)时,触发恶意代码执行。例如:歹意用户在URL参数中植入脚本,用户点击URL在浏览器关上后,JS读取有脚本的参数,未做适当解决,触发脚本执行。DOM型XSS在不须要和服务器交互状况下,客户端JS脚本能够在浏览器中间接查找、操作(增删改)DOM模型的元素。同时也能读取用户在浏览器的输出,如URL对象、location对象,并提取相干的参数。如果用户输出的内容总蕴含歹意脚本,而程序没有进行无效的解决和过滤(如把传输数据间接交给eval执行),就会导致DOM型XSS攻打。 攻打示例网页代码以下示例代码中,JS代码从浏览器URL中读取param参数,未经校验和解决,间接写入document中,如果参数内容中夹带可执行的JS脚本块,脚本就会间接执行。 <!--dom_xss_sample.html--><!DOCTYPE html><html><head> <title>DOM XSS</title></head><body> <p>DOM XSS攻打示例</p></body><script> var pos=document.URL.indexOf("param=") + 6; document.write(decodeURI(document.URL.substring(pos,document.URL.length)));</script></html>运行成果在URL中,减少param=<script>alert(0)</script>参数,参数内容通过document.write间接写入到页面中。 参数中的脚本代码块间接执行,触发XSS攻打。 除了间接在参数中带不言而喻的脚本外,在其余标签中夹杂可执行的事件也是常见形式,如在img标签的onerror事件中执行脚本。示例如下:param=<img src="null" onerror="alert('1')" />从以上示例中能够看出,造成DOM型XSS破绽攻打,次要有两个过程: 在输出的数据源中夹带了歹意脚本程序未对输出进行必要的解决,导致歹意脚本执行其中,输出除了上述document.URL,还包含如下数据源: document.URLdocument.URLUnencodeddocument.locationdocument.referrerwindow.locationlocationlocation.hreflocation.searchlocation.hashlocation.pathname对输出的解决,除了上述document.write,还包含如下办法: 间接执行脚本类eval(…)window.execScript(…)window.setInterval(…)window.setTimeout(…)写HTML页面类document.write(…)document.writeln(…)element.innerHTML(…)间接批改DOM类document.forms[0].action=…document.attachEvent(…)document.create…(…)document.execCommand(…)document.body. …window.attachEvent(…)替换文档URL类document.location=…document.location.hostname=…document.location.replace(…)document.location.assign(…)document.URL=…window.navigate(…)关上/批改窗口类document.open(…)window.open(…)window.location.href=… (and assigning to location’s href, host and hostname)更多的DOM型XSS攻打办法,可参考如下文档 DOM Based Cross Site Scripting or XSS of the Third Kind 进攻办法对于DOM型XSS的攻打,OWASP组织提供了7条RULE和10条GUIDELINE,此处不再累赘,请参考官网原文DOM based XSS Prevention Cheat Sheet

August 28, 2020 · 1 min · jiezi

Web安全xss防护实践

XSS XSS (Cross-Site Scripting),跨站脚本攻击,因为缩写和 CSS重叠,所以只能叫 XSS。跨站脚本攻击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击。 跨站脚本攻击有可能造成以下影响: 利用虚假输入表单骗取用户个人信息。利用脚本窃取用户的Cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求。显示伪造的文章或图片。XSS 的原理是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。 XSS 的攻击方式千变万化,但还是可以大致细分为几种类型。 存储型XSS:注入型脚本永久存储在目标服务器上。当浏览器请求数据时,脚本从服务器上传回并执行。反射型XSS: 当用户点击一个恶意链接,或者提交一个表单,或者进入一个恶意网站时,注入脚本进入被攻击者的网站。Web服务器将注入脚本,比如一个错误信息,搜索结果等 返回到用户的浏览器上。浏览器会执行这段脚本,因为,它认为这个响应来自可信任的服务器。基于DOM的XSS:被执行的恶意脚本会修改页面脚本结构XSS最终是要以“输出编码”来完成攻击的,我们将“输出编码”的攻击方法总结为以下几种 在 HTML 标签中输出变量;在 HTML 属性中输出变量;在 script 标签中输出变量;在事件中输出变量;在 CSS 中输出变量;在 URL 中输出变量。表现为: 在 HTML 中内嵌的文本中,恶意内容以 script 标签形成注入。在内联的 JavaScript 中,拼接的数据突破了原本的限制(字符串,变量,方法名等)。在标签属性中,恶意内容包含引号,从而突破属性值的限制,注入其他属性或者标签。在标签的 href、src 等属性中,包含 javascript: 等可执行代码。在 onload、onerror、onclick 等事件中,注入不受控制代码。在 style 属性和标签中,包含类似 background-image:url("javascript:..."); 的代码(新版本浏览器已经可以防范)。在 style 属性和标签中,包含类似 expression(...) 的 CSS 表达式代码(新版本浏览器已经可以防范)。在url参数上(下面有例子)反射型 XSS 特征: 攻击者可以直接通过 URL (类似:https://xxx.com/xxx?default=<script>alert(document.cookie)</script></script>)) 注入可执行的脚本代码。不过一些浏览器如Chrome其内置了一些XSS过滤器,可以防止大部分反射型XSS攻击。 措施 Web 页面渲染的所有内容或者渲染的数据都必须来自于服务端。尽量不要从 URL,document.referrer,document.forms 等这种 DOM API 中获取数据直接渲染。尽量不要使用 eval, new Function(),document.write(),document.writeln(),window.setInterval(),window.setTimeout(),innerHTML,document.createElement() 等可执行字符串的方法。如果做不到以上几点,也必须对涉及 DOM 渲染的方法传入的字符串参数做 escape 转义。前端渲染的时候对任何的字段都需要做 escape 转义编码。_// 防御xss漏洞_ ...

July 3, 2020 · 5 min · jiezi

XSS系列之3种类型

一、概述Cross-site scripting,简称XSS,跨站脚本攻击。XSS是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在浏览网页的时候,就会受到影响。 二、反射型XSS - Reflected XSS用户在页面的输入,经过http请求发送到服务端,服务端处理后,把用户输入原封不到返回到浏览器,浏览器也没做处理直接把用户输入显示到页面种。 1 示例:代码 // 服务端(koa2)router.get('/search', async (ctx, next) => { let req = ctx.request ctx.state = { title: 'xss', word: req.query.word } ctx.body = req.query.word ? req.query.word : ''})详细讲解可点击

June 8, 2020 · 1 min · jiezi

译永久改变互联网的MySpace蠕虫

十年前,几行代码为黑客提供了100万个朋友,并获得了美联储的访问。 插图:SHAYE ANDERSON 萨米不想成为每个人的英雄。他甚至都不想要新朋友。 但是由于几行巧妙的代码,在不到一天的时间内,他成为了当时最流行的在线社交网络上超过一百万人的“英雄”和“朋友”,我的空间。 大约在2005年10月4日午夜,在洛杉矶,当时19岁的黑客Samy Kamkar释放了后来被称为“ Samy蠕虫”的病毒,它可能是传播速度最快的计算机病毒。一次,这种病毒永远改变了网络安全的世界。 Kamkar于16岁高中毕业,并在17岁时创立了一家名为Fonality的软件创业公司。他说,他只是想打动他的技术朋友,仅此而已。一切都在一周前开始,坎卡尔告诉我。当时,MySpace为用户提供了许多自定义配置文件的自由,从而允许使用HTML代码,这导致了色彩丰富,而且查看配置文件通常很麻烦。 “一旦我能够做到这一点,我意识到我实际上可以在页面上做任何事情。” 详细讲解可点击

June 8, 2020 · 1 min · jiezi