Insert注入实例简单分析
phoneNum参数后加单引号不过仅有上面两条报错信息分析不出来什么,还要继续试,单引号后再加参数fuzz一会,再加上此处的业务逻辑是发验证码,猜测此处有可能是Insert注入,再结合一个很关键的报错信息如下:fuzz参数phoneNum为138',':这个报错信息很明显了,加了个逗号,告诉我参数数量是4,而应该是3,基本上可以确定为这里的SQL存储过程执行的是插入语句,且插入语句的大体结构可能如下:insertintotablevalues('userid','phoneNum','')结合报错信息来看,涉及到参数的语句在小括号外面还有一对单引号,故我们得出的此处参数如下:'('userId','phoneNum','')'这个结构可以解释之前所有的报错,所以基于这个结构构造注入语句试一试。自然的构造如下的语句:'('userId'orupdatexml()or'','phoneNum','')'这样就可以执行updatexml()语句执行报错,故所需Payload只是
跨域总结
AcceptAccept-LanguageContent-LanguageLast-Event-IDContent-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain基本原理基本原理是浏览器发送的header信息中增加了一个Origin字段GET/corsHTTP/1.1Origin:http://api.bob.comHost:api.alice.comAccept-Language:en-USConnection:keep-aliveUser-Agent:Mozilla/5.0...然后服务器根据这个值,决定是否同意这次请求,若origin指定的源不在范围之内,服务器会返回一个不带有Access-Control-Allow-Control字段的信息,浏览器收到就会抛出一个错误。如果Origin指定的域名在许可范围内,服务器返回的信息会多出几个头信息字段。//正常返回Access-Control-A
fetch使用的常见问题及解决办法
首先声明一下,本文不是要讲解fetch的具体用法,不清楚的可以参考MDNfetch教程。引言说道fetch就不得不提XMLHttpRequest了,XHR在发送web请求时需要开发者配置相关请求信息和成功后的回调,尽管开发者只关心请求成功后的业务处理,但是也要配置其他繁琐内容,导致配置和调用比较混乱,也不符合关注分离的原则;fetch的出现正是为了解决XHR存在的这些问题。例如下面代码:fetch(url).then(function(response){returnresponse.json();}).then(function(data){console.log(data);}).catch(function(e){console.log("Oops,error");});上面这段代码让开发者只关注请求成功后的业务逻辑处理,其他的不用关心,相当简单;也比较符合现代Promise形式,比较友好。fetch是基于Promise设计的,从上面代码也能看得出来,这就要求fetch要配合Promise一起使用。正是这种设计,
跨域的解决方案(一):jsonp及其实现
最近遇到了跨域问题,有很多种解决方案,本文主要对其中的jsonp进行演示,本文使用node编写服务器端代码进行测试。jsonp的来历ajax中的资源访问受到浏览器安全的‘同源’限制,存在跨域问题。但是script标签的引入并不具有’同源’限制,不存在跨域问题,利用这个特性进行数据的获取,就是jsonp。JSONP(JSONwithPadding)是一个非官方的协议,它允许在服务器端集成Scripttags返回至客户端,通过javascriptcallback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。简单的一句话:jsonp是一个协议,由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,为了实现跨域请求,可以通过script标签实现跨域请求,然后在服务端输出JSON数据并执行回调函数,从而解决了跨域的数据请求。jsonp的实现从上文可知,jsonp的实现需要客户端代码和服务器端代码共同努力。整体的思路如下图:script标签不受跨域资源请求的影响,可以通过增
深入了解 JSONP
核心原理:由于HTML的
Ajax access Control Allow Origin实现跨域访问用法
欢迎大家关注我的其他Github博客和简书,互相交流!1.什么是jsonp:JSONP(JSONwithPadding)是一个非官方的协议,它允许在服务器端集成Scripttags返回至客户端,通过javascriptcallback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。2.JSONP有什么用?由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,为了实现跨域请求,可以通过script标签实现跨域请求,然后在服务端输出JSON数据并执行回调函数,从而解决了跨域的数据请求。3.如何使用JSONP?下边这一DEMO实际上是JSONP的简单表现形式,在客户端声明回调函数之后,客户端通过script标签向服务器跨域请求数据,然后服务端返回相应的数据并动态执行回调函数。下面是我自己做的一个简单的demo。实现的是306关键字搜索功能。采用的就是jsonp的跨域功能!看例子
Ajax jsonp 跨域实例
欢迎大家关注我的其他Github博客和简书,互相交流!1.什么是jsonp:JSONP(JSONwithPadding)是一个非官方的协议,它允许在服务器端集成Scripttags返回至客户端,通过javascriptcallback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。2.JSONP有什么用?由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,为了实现跨域请求,可以通过script标签实现跨域请求,然后在服务端输出JSON数据并执行回调函数,从而解决了跨域的数据请求。3.如何使用JSONP?下边这一DEMO实际上是JSONP的简单表现形式,在客户端声明回调函数之后,客户端通过script标签向服务器跨域请求数据,然后服务端返回相应的数据并动态执行回调函数。下面是我自己做的一个简单的demo。实现的是306关键字搜索功能。采用的就是jsonp的跨域功能!看例子
Nisp之道
Nisp什么是Nisp?Nisp是一种思想,一切皆函数()。基本语法规则为(?),其中的?是定义在Sandbox(沙盒)里的方法,可通过(help)列举所有沙盒方法。目的设计Nisp的目的在于灵活地定义不同的方法规则来满足不同的需求,而方法去解析用户输入的参数时,依然使用(?)的解析形式。思想Nisp采用分治思想,将一个大的问题分解成有相似解决方案的小问题,分而治之。例如(+(+11)1)表达式,(?)中的?为+,将会使用沙盒定义的+方法,做加法操作,被分解成(+11)=>2,(+21)=>3。用户只需输入exp表达式,使用到sandbox里的方法,经过nisp,将最终输出用户所需的值。Sandbox(沙盒)用户不同的使用场景下,会有不同的方法。沙盒中定义了一些原子性的方法,用户可以用原子性的方法,去组合出所需的分子结果。例如Portm中
关于跨域问题的一个解决方法
为什么要跨越当需要允许其他人使用自己网站的一些API时,跨域就是一个必须要解决的问题了。跨域解决方案JsonP因为HTML中的标签的Src属性可以跨域,所以该方案通过动态引入
Webpack2中的NamedModulesPlugin与HashedModuleIdsPlugin
要讨论Webpack2中新增的这两个plugin的功能,还要先从使用Webpack打包的项目的前端资源缓存方案说起。通常在使用了Webpack的项目中我们会使用CommonsChunkPlugin来将所有依赖的第三方包打包到一个名为vender的chunk中。与此同时,为了避免每次更改项目代码时导致venderchunk的chunkHash改变,我们还会单独生成一个manifestchunk。举个例子,假设我们有一个项目,项目中入口文件为index.js。其内容如下:importaddfrom'./src/add';importleftPadfrom'left-pad';importjsonpfrom'jsonp';add(1,2);通常我们的webpack.config.js文件就会有类似如下的配置:constpath=require('path');constwebpack=require('webpack');module.exports={entry:{
JSONP之我见
JavaScript初学,一点自己的理解,有不当之处请大家指正~JSONP:本地html文件要获取xxx网站(跨域)数据时使用的方法。跨域问题:外部服务器的数据只能用外部服务器中的js访问,本地js无法用XMLHttpRequest()访问。外部服务器中的Web服务提供JSON数据,比如在http://gumball.wickedlysmart.com/中,数据包含在函数updateSales中作为参数,现在要在本地html中访问外部服务器中的JSON数据该怎么办呢?1,查看Web服务文档,明确服务实际使用的参数名(本例只有一个参数即一个对象数组);2,在url中指定一个回调函数,http://gumball.wickedlysmart.com/?callback=updateSales,用来指定Web服务中访问JSON数据的函数名;3,在本地js文件中使用刚才定义的函数名创建函数updateSales(对象),编写处理得到外部JSON数据的方法;4,在html文件中的
关于laravel框架的跨域请求/jsonp请求的理解
最近刚接触laravel框架,首先要写一个跨域的单点登录。被跨域的问题卡了两三天,主要是因为对跨域这快不了解,就在刚才有点茅塞顿开的感觉,我做一下大概整理,主要给一些刚接触摸不着头脑的看,哪里写得不对的,也请大神指点,言归正传:1.先用通俗易懂的话说下原理和几种跨域的方式,因为网上一搜都是追对某一种方式的专业性解答,我是消化不了多少。第一种:jsonp方式,这是什么方式呢,先要说一说JavaScript,在JavaScript中,有一个很重要的安全性限制,被称为“Same-OriginPolicy”(同源策略),也就是说JS只能访问当前项目的页面。AJAX是基于XMLHttpRequest(这个请自行百度了解)实现的,所以AJAX一类的请求肯定也是不能跨域请求的。然后jsonp方式呢,虽然一般是再$.ajax方法里面设置dataType:'jsonp',但是发送请求出去的时候,已经跟ajax没多少关系了,不管你设置type:get还是post,它都是通过get发送请求的,可以说这个已经属于jsonp协议了,这是
那些年,那些跨域问题
浏览器在请求不同域的资源时,会因为同源策略的影响请求不成功,这就是通常被提到的“跨域问题”。作为前端开发,解决跨域问题应该是一个被熟练掌握的技能。而随着技术不断的更迭,针对跨域问题的解决也衍生出了多种解决方案。我们通常会根据项目的不同需要,而采取不同的方式。这篇文章,将详细总结跨域问题的相关知识点,以便在遇到相同问题的时候,能有一个清晰的解决思路。跨域问题的产生背景早期为了防止CSRF(跨域请求伪造)的攻击,浏览器引入了同源策略(SOP)来提高安全性。CSRF(Cross-siterequestforgery),跨站请求伪造,也被称为:oneclickattack/sessionriding,缩写为:CSRF/XSRF。——浅谈CSRF攻击方式而所谓"同源策略",即同域名(domain或ip)、同端口、同协议的才能互相获取资源,而不能访问其他域的资源。在同源策略影响下,一个域名A的网页可以获取域名B下的脚本,css,图片等,但是不能发送Ajax请求,也不能操作Cookie、LocalStorage等数据。同源
跨域的几种解决方案
http://www.kmac007.com/2017/index.html不同源(协议不同)https://www.kmac007.com/2017/first.html同源https://kmac007.com/2017/first.html不同源(域名不同)https://kmac007.com:8080/2017/first.html不同源(端口不同)同源策略的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。跨域以及跨域的几种实现方式跨域指的是,突破同源策略,不同源之间进行数据传输或通信。跨域有如下几种实现方式:JSONPdocument.domainwindow.postMessageCORS:跨域资源共享(Cross-originresourcesharing)等JSONP在JS中我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的。由于script标签不受同源策略的限制,可以通过script标签向服务器请求数据。而JSONP就是通过这个特性来实现的。JSONP的原理是,在
单点登陆(一):思考
关于token同步的思考从其定义中不难发现,核心功能点:一处登录处处登录,注销亦然。那么如何实现一处登录处处登录,先抛开网上各种解决思路回到问题本身。用户中心登录成功后产生的token(或者说“票据”,后文统一称token)如果能够同步到各个业务系统,而各个业务系统能成功解析token后即可认为达到了一处登录处处登录。所以关键问题在于:如何在用户中心登陆成功后将token同步到各个业务系统。各业务系统如何能够成功解析token。其中各业务系统解析token很好解决,和用户中心约定一套公用的加密/解密方式即可。那么问题一,由于token的存储一般在于浏览器,而从用户中心服务器发起请求到各个业务系统是在浏览器端写不了token的。那么换种思路,在登陆成功后从浏览器端向各个业务系统发起请求写入token。关于登陆功能使用的思考而由于用户中心被许多业务系统所使用,各系统所使用的开发语言未必能完全统一,于是有功能点二:登录服务的调用应该是易用且与平台语言无关的。这个问题可按两种不同的思路来解决:业务系统没
跨域以及CORS相关知识简介
html同源策略是不允许JavaScript的跨域请求的,而使用CORS(Cross-originresourcesharing)可以实现跨域请求,当然也有其他的办法,常用的有JSONP方式来实现跨域,这里就简单的列举一下实现跨域的几种办法,对于CROS和JSONP详细的了解一下。CROSCROS可以实现跨域,是HTML5的标准,需要浏览器的支持,同时也需要服务器端的支持。使用CROS实现跨域,主要的工作是在后端实现,需要在服务器端做设置,一般都是设置http头中的Access-Control-Allow-Origin属性,用来指定哪些站点可以访问。CROS常用属性Access-Control-Allow-Origin,允许哪些站点访问。Access-Control-Max-Age,表示多久之内不需要在发送预检请求,有关预检请求下面说明。Access-Control-Allow-Methods,表示允许的请求方法,比如get、post、delete等。Access-Control-Allow-Headers,表示允许的
JSONP详解
什么是JSONP?JSONP(JSONwithPadding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于server1.example.com的网页无法与不是server1.example.com的服务器沟通,而HTML的