两次前端绕过渗透小结
*本文作者:0d9y;本文属FreeBuf原创奖励计划,未经许可禁止转载。一直想发一些渗透过程的东西和大家分享,可是渗透成功呢要过很久才能发布,然后就忘记了,最近遇到了两次和前端JS对抗的渗透过程。虽然最终没有成功,不过蛮有意思的,和大家分享一下。ONE先上URL地址http://www.XXXXXX.com/fastreg.html?to=w2i&css=www.wanmei.com/public/style/fastreg/skin1.css&wmrid=RP42970167看到url中有一个css链接加上css这个关键属性字眼,于是等待网页加载结束后,直接右键查看源代码。一上来就看到了一段JS代码,getArgs再看到window.location.search就觉得这段代码需要看一看,很简单的一段代码,就是第一个函数事先获取问号以后的所有字符串,然后分割开存到args字典后返回,第二个函数把所有的特殊符号用html编码了,可以看到接下来还用了一个isinstyle的函数,没有在源代码中找到,说明他引用
Java后端程序员都做些什么?
这个问题来自于QQ网友,一句两句说不清楚,索性写个文章。我刚开始做Web开发的时候,根本没有前端,后端之说。原因很简单,那个时候服务器端的代码就是一切:接受浏览器的请求,实现业务逻辑,访问数据库,用JSP生成HTML,然后发送给浏览器。即使后来Javascript在浏览器中添加了一些AJAX的效果,那也是锦上添花,绝对不敢造次。因为页面的HTML主要还是用所谓“套模板”的方式生成:美工生成HTML模板,程序员用JSP,Veloctiy,FreeMaker等技术把动态的内容添加上去,仅此而已。那个时候最流行的图是这个样子:请点击此处输入图片描述在最初的J2EE体系中,这个表示层可不仅仅是浏览器中运行的页面,还包括Java写的桌面端,只是Java在桌面端太不争气,没有发展起来。每个程序员都是所谓“全栈”工程师,不仅要搞定HTML,JavaScript,CSS,还要实现业务逻辑,编写访问数据库的代码。等到部署的时候,就把所有的代码打成一个WAR包,往Tomcat指定的目录一扔,测试一下没问题,收工回家!
托管安全服务提供商(MSSP)保障SD-WAN安全
虽然网络在过去几年一直处于转型期,但传统的网络连通性却带来了一系列的障碍。主要是它历来是依赖于静态网络连接、设备和策略基础设施,以适应临时资源分配和动态工作负载所需要的网络弹性。这种状况一直延续到软件定义广域网(SD-WAN)的出现。SD-WAN对传统市场的核心突破在于其内在的网络不可知的特征,假设用户拥4G、宽带和MPLS的多种不同的网络接入,SD-WAN将是能够综合利用不同链路解决问题的有效方式,SD-WAN逐渐成为当今数字化转型的重要组成部分。它不仅能够在多个位置动态分配流量,同时能够自动响应不断变化的应用程序策略,且与传输和运营商无关。这意味着MPLS可以选择更多的连接选择,从而实现启用智能路径选择等节省时间和成本的功能。尽管SD-WAN解决了连接和效率问题,但仍需要解决安全问题。任何网络架构的改变都会造成攻击面的变动,虽然SD-WAN具有一些内置的基本安全功能,而高级安全性(如通常与SD-WAN同时运行的下一代防火墙(NGFW))需要与SD-WAN相结合带来更大的优势。根据Gartner的研究显示,到2020年由于IT安全团
推荐一个好用的动画库Animate.css
看到一些电商应用,在添加商品到购物车时,都会有一个动画。知道是用css实现,但没有自己写过帧,偶尔发现一个好用的库,正如它的名称所展示的,它就是专门做动画的,传递门https://daneden.github.io/animate.css/特效特别种类的多,就像是幻灯片切换效果我从里面找出自己所需要的购物车跳动bounceIn效果,移植到自己的灵犀微商城里,就有了以下的效果@keyframesbounceIn{from,20%,40%,60%,80%,to{animation-timing-function:cubic-bezier(0.215,0.610,0.355,1.000);}0%{opacity:0;transform:scale3d(.3,.3,.3);}20%{transform:scale3d(1.1,1.1,1.1);}40%{transform:scale3d(.9,.9,.9);}60%{opacity:1;transform:scale3d(
post的奇技淫巧:Post the checkboxes that are unchecked
放到javascript里为实在是意外。主要是这应该是属于前端的事情。起因是这样的,一个checkbox,在没有选中前提交。POST过来的数据中。连checkbox对应的name的KEY,在$_POST中就不存在。这个就尴尬了。因为正常操作是form.submit(),或者是用$.post('xxx',$('#form').serializeArray())。这两种情况下,未选中的checkbox直接就消失在$_POST中了表单的KEY比较多,将近20个(有点夸张,但是是事实)。如果一个个的写varxxx=$('xxx:checked').val()||0;这样也好痛苦的说~~网上找了一下,看到这个:https://stackoverflow.com/questions/1809494/post-the-checkboxes-that-are-unchecked,投票最高的居然是:XML/HTML代码
vue开发看这篇文章就够了
谈谈JS中的高级函数
博客原文地址:Claiyre的个人博客如需转载,请在文章开头注明原文地址在JavaScript中,函数的功能十分强大。它们是第一类对象,也可以作为另一个对象的方法,还可以作为参数传入另一个函数,不仅如此,还能被一个函数返回!可以说,在JS中,函数无处不在,无所不能,堪比孙猴子呀!当你运用好函数时,它能助你取西经,让代码变得优雅简洁,运用不好时,那就遭殃了,要大闹天宫咯~除了函数相关的基础知识外,掌握一些高级函数并应用起来,不仅能让JS代码看起来更为精简,还可以提升性能。以下是博主总结的一些常用的、重要的高级函数,加上了一些个人见解,特此记录下来。如果您是JS初学者,也不要被“高级”两个字吓到,因为文中穿插讲解了一些原型、this等基础知识,相信并不难理解。如果您是JS大牛,也可以把本文用来查漏补缺。正文作用域安全的构造函数functionPerson(name,age){this.name=name;this.age=age;}varp1=newPerson("Claiyre",80);相信您对上面的构造
如何在真实世界构建你的Mobx应用程序
本文是受到@mwestrase许多文章的启发,以及经过几个星期将一个大型的Backbone应用程序重构为React+MobX应用程序,是将Mobx添加到一个普通的React项目的“衣钵传人”。或许这不是构建Mobx应用程序的最佳方式,但这种方式到目前为止一直在我的项目中很好的运作。设计本架构的目标是:样板最小化使应用程序成为一个状态机灵活移动元素我们将通过React上下文和MobX的出色的inject函数来实现样板最小化。这样的组合使数据集无需进行任何接线和props传递就可以在应用程序的任何地方使用。如果组件需要访问状态机,注入到store中。你的UI设计师大可以根据其想法重新调整页面,而你所要做的只是更改组件的位置。除非业务逻辑本身改变,否则不需要重新接线业务逻辑。对我而言,这曾经是React的一个难题。使用这种方法,你的组件变得真正独立,你可以做任何你想要的。这非常有趣,我甚至为此早早来上班!如果你了解我,你会知道我有多喜欢过属于自己的早晨。这是如何完成的通过上下文和注入给了我们灵
WebView与JS的交互
android代码通过WebView的addJavascriptInterface()进行对象映射这里要注意做这个功能的时候要将js调用的方法名和对象名都清楚告诉web端test.hello(Stringname),前面的对象名不能掉.规定对被调用的函数以@JavascriptInterface进行注解从而避免漏洞攻击,这里对漏洞不做多的解释。通过WebViewClient的方法shouldOverrideUrlLoading()回调拦截url这种方式用的比较少,可以在android中捕获一些html上的数据,下面给出代码供参考
初识JavaScript(一)
初识JavaScript(一)最近由于工作的需要的原因,我从一个写后台的现在让我转到写前端,再加上我的js部分特别的差,所以我现在开始学习js部分的知识。我的第一篇博文就这样开始写了。俗话说,千里之行,始于足下。九层高台,始于垒土。我要努力跟上博客园的各位大神的脚步。1.初识JavaScript的词法结构在编程语言中词法机构是一套基础性规则,用来描述如何使用这门语言编写程序。在本小节中,咱们要认识到JavaScript的字符集、怎样区分大小写、空格、换行符和格式控制符、Unicode转义序列、标准化、注释等等词性结构。1.1字符集JavaScript的程序使用Unicode字符集编写的,那什么是Unicode呢?Unicode是ASCII和Latin-1的超集,它支持地球上几乎所有在用的语言。1.2区分大小写JavaScript是区分大小写的语言。也就是说,关键字、变量、函数名、和所有标识符(identifier)都必须采取一致的大小写的形式。举个栗子:关键字"while"必须写成"while"而不能写成"Wh
手撕vue-cli配置文件——config篇
最近一直在研究webpack,突然想看看vue-cli中的webpack是如何配置,查阅了很多相关的文章,所以也想出几篇关于vue-cli配置的东西。正所谓“工欲善其事必先利其器”嘛!这一篇主要是分析vue中关于config文件夹中的相关代码;首先我们先看一下config的文件结构:|-config|---dev.env.js|---index.js|---prod.env.js打开我们的vue项目文件夹我们可以清楚的看到文件夹下的三个文件,“dev.env.js”,“index.js”,“prod.env.js”,我们先打开prod.env.js的文件,看里面的内容:'usestrict'module.exports={NODE_ENV:'"production"'}prod.env.js的内容非常简单,仅仅是导出了一个对象,里面写明了执行环境是“production(生产环境)”;我们接下来看与之对应的“dev.env.js”文件:'usestrict'//引入webpack-merge模块constmerge=
聊聊点击穿透
移动端的开发经常需要监听用户的双击行为,所以在touchend事件之后会有300ms左右的延迟,用来判断是否有双击事件。因为这种延迟,所以我们在移动端通常不监听click事件。移动端的事件的发生顺序是这样的:touchstart—touchmove—touchend,然后大约过300ms触发click事件tap事件zepto这个库解决click延迟的思路是:自定义tap事件,当用户点击元素时,touchend事件会先于click发生,当touchend冒泡到document时触发目标元素的tap事件所以我们可以通过监听tap事件代替监听click事件。但需要注意的是,tap事件并不是点击穿透在我们常见的弹出层这种情况下,点击关闭弹出层时可能会发生穿透现象。那为什么会出现点击穿透这种现象呢因为当tap事件发生时,上层遮罩层关闭,此时事件只进行到了touchend,而click大约在300ms后才触发,当click触发时,上面的遮罩层已经消失,这就相当于点击了到了下层的元素如果这个元素绑定了click事件,或者有默
Metaballs
Metaballs是有机的黏糊糊的黏糊糊的东西。从数学的角度来看,它们是一个等值面。可以用一个数学公式来表示:f(x,y,z)=r/((x-x0)2+(y-y0)2+(z-z0)2)。@JamieWong写了一篇非常优秀的教程,介绍了怎么使用Canvas来渲染Metaballs。我们可以在一个元素中使用模糊和滤镜在CSS和SVG中复制Metaball效果。比如@chrisGannon写的一个泡泡滑块的效果:SVGMetaball我发现了另一种方法,使用Paper.js可以实现这种效果。在编写代码的时代,@HiroyukiSato通过一个脚本和AdobeIllustrator生成一个GooeyBlobs的效果。与以前的技术不同的是,这并没有像素的渲染或依赖于过滤器特性。相反,它将两个圆与个膜(membrane)相连。也就是说,我们可以将整个块作为路径生成。比如@Amoebal在Codepen上写的这个示例,就采用了这种技术。在这篇文章中,我将分解Metaball效果实现所需要的步骤。
《CSS那些事儿》之阅读笔记
6.IE6中如何正常显示png-24格式的图片。7.设置display:inline,解决IE6双倍间距(margin)的bug问题。8.清除浮动的5种方法①在浮动的子元素最后加一个
编码转换工具 (C#入门)
一直想写一些图形化工具来用。从小入手,写了个计算器,看了下代码,有点麻瓜。工具:编码转换工具编译:VS2015C#(.NETFrameworkv4.0)先看一下效果图:其中有个bug,就是ASCii不归零,也不知道是怎么回事。默认的textBox获取方式为Encoding.Default.GetBytes(str),注意的是要使用UTF8,代码有些丑陋,就不贴了。在写到Base32的时候,没找到现成的方法可以直接利用,所以就去了解了下、Base32是由ABCDEFGHIJKLMNOPQRSTUVWXYZ234567组成的,由于0和1由于与字母O和I相似性而被跳过。规则:任意给定一个二进制数据,以5个位(bit)为一组进行切分(base64以6个位(bit)为一组)对切分而成的每个组进行编码得到1个可见字符。演示:(以rcoil字符串进行编码)字符rcoil取ASCII码之后,对其转换成二进制(切5补0)得到01110,01001,10001,1011
Android消息处理机制
消息处理机制相关类Message:消息,其中包含了消息ID,处理对象和处理数据,由MessageQueue统一队列管理,最终由Handler处理。Handler:负责Message发送和处理。MessageQueue:消息队列,按照FIFO原则存放消息。Looper:消息泵,来处理MessageQueue中的Message。Message,MessageQueue,Handler,Looper之间的关系aed1213f-a5c1-4d65-b308-b807ca1c3fc1.jpeg看代码Looper.class变量/***用于管理Looper*/staticfinalThreadLocal
Kafka Vs RocketMQ
以下所有的分析都是基于RocketMQ(tagrocketmq-all-4.1.0-incubating)和Kafka(tag0.10.0.0),对于Kafka,涉及Producer和Consumer的,都是基于过去大半年时间断断续续看了很多RocketMQ和Kafka的源码,下面从源码的角度分析下两者的共同点/不同点。部署和存储模型RocketMQ的部署是主从架构,可以一主无备,一主一备,一主多备,多主多备,可靠性依次递增。Kafka的部署是互为主备的架构,一个Broker即可以是某个分区的主副本,又可以是其他分区的从副本。底层存储上,如图,以4台Broker为例,Kafka:假设Topic_A有3个Partition,每个Partition有3个Replica.具体的分布如图(左上)所示,红色表示主副本,其他都是普通副本。每台Broker上都有图(左下)所示的目录结构,用来存储日志。对于Topic_A的每个Partition,都有C
老且仍然有用的十个信息技术原则
至顶网CIO与应用频道01月03日编译:虽说事情并不完全如此,但是每一扇通往信息技术的大门上都应该刻上这么一句话。这当然比“进入此门者须放弃所有的希望”好多了。幸运的是,信息技术早期的很多基础智慧到现在仍然在发挥作用,不过是以不同的方式,更为现代化的方式。这里有十条老派的原则,可以引导你进入下一代的信息技术,同时附上的还有你应该采用的方式同老版本做法的区别。从来都不是只考虑技术有多好旧版本:“从来没有人因为采购了IBM而被解雇”。新版本:开源可以提供同样的好处。你采购的技术是你的长期承诺。你也需要它有来自供应商的长期承诺。为了安全起见,信息技术部门一度喜欢从大厂商那里进行采购。现在?开源产品不仅可以做到非常安全,有时你甚至也可以从IBM或其他大型供应商那里采购它们。并不是所有的开源技术都有足够广泛的支持,但是确实有很多开源技术已经具备了这一点。例如,如果PHP能够完成这项工作,那么考虑到其可怕的安全记录,你会再看Java第二眼吗?然而,Java是身为世界上最大的软件公司之一的Oracle支持(也许在这里用“
New Life With 2018
2017年转眼过去了。对自己来说。这一大年是迷茫和认知的一年。我的第一篇博客就这样记录下自己的历程吧一:选择从进入这一行到现在已经一年多了,2016年11月份就像所有的应届毕业生一样,都贼反感毕业,记得那段时间就是一个字,迷茫。无助。当时大学里想的是,我毕业了一定可以贼牛逼,外面好混。可是,当我迫不得已的去找销售的工作的时候(没有看不起的意思~),真的。觉得。这不是自己想要的生活,当时大学在省城读的,出来实习了啊。找工作了啊,哎。各种打击。好像那时候都是培训比较多。我当时大学也是大专,大学玩了两年半。玩的不算多爽吧,至少混了两年半。终于,在那段日子里,11月份的日子里。寝室里和隔壁寝室有几个哥们去培训了。看他们白天培训,晚上回去打麻将。看的心累啊。算了吧。不跟他们混了吧~~~~~自己和寝室另一个哥们出去找工作,另一个哥们被忽悠进入了一个公司。也是培训取得。现在php也还是可以的~。我当然不能这样啊。我都没想过培训,我当时的想法是找个这个行业的工作,慢慢学,后来发现。。。。。真的没有这个机会啊。终于,找到了一个seo的工作。说是seo。其实,就是发
同样是程序员,15K与40K月薪差异在哪里?
和做人的基本道理一样,程序员自身的综合素质影响了自己的价值。很多学程序的学生试图从自己的学历或所学的语言来确定自己今后能拿到多少报酬,这也有一定的道理,因为编程语言的难度和产品范围在一定程度上也影响劳动价值。就北京来说,大多数软件工程师的入门月工资大约是在3000元左右,几年后成为熟练程序员大约在5000元-10000元以上。首先在软件行业中,敬业精神尤为关键。程序员工作是相当枯燥并且辛苦的,是否具有忍耐力、快速学习能力、沟通能力以及团体合作精神,是敬业素质的重点。一个好的程序员到哪都是抢手人物,但一个好程序员的背后则需要他拼命地工作和不倦地学习,有时还要借助于灵感,而灵感来自于经验的积累和广阔的视野。现在许多公司都是由一两个优秀的程序员在支撑,整个公司的业务都会注视着这少数的“领头羊”,薪酬也自然会向他们倾斜。即使在同一个公司里,程序员之间的能力差距所造成的月薪差距会在数千元之多。竞争中永远是弱肉强食的,要想在待遇上遥遥领先,至少应当具备一直往前跑的阿甘精神。其次要清楚为什么要培训。个人总结培训有以下几种好处:1:克服学习瓶颈。