摘要 当脚本在object-html标签内执行时,位置对象将获得焦点并返回主位置,而不是它自己的位置。 确切地说,它将返回写入地址栏中的文本。...在上面的代码中,“obj.html”在对象内部进行渲染,并且其内容被放入与iframe类似的方框中,然而,虽然在窗口对象与顶层对象进行比较时返回值为true,但是它并非顶层窗口。...无论如何,在尝试实现UXSS(持久性是现实攻击中一切的关键)时,我获得了一个惊喜:当对象被注入到onbeforeunload时,我们得到的不再是顶层窗口的位置,而是浏览器的将要到达的位置或当前写入地址栏的内容...好了,现在我们就能在用户离开时获取对象位置,从而确切地知道她在地址栏中输入的内容。...当然,它不一定是一个完整的URL,例如,如果用户在地址栏中输入单词,它将自动被转换为搜索查询URL(IE默认为Bing),这当然可以被完整读取! 在IE上进行测试
摘要 当脚本在object-html标签内执行时,位置对象将获得焦点并返回主位置,而不是它自己的位置。 确切地说,它将返回写入地址栏中的文本。...data="obj.html" type="text/html"> 在上面的代码中,“obj.html”在对象内部进行渲染,并且其内容被放入与iframe类似的方框中,然而,虽然在窗口对象与顶层对象进行比较时返回值为...无论如何,在尝试实现UXSS(持久性是现实攻击中一切的关键)时,我获得了一个惊喜:当对象被注入到onbeforeunload时,我们得到的不再是顶层窗口的位置,而是浏览器的将要到达的位置或当前写入地址栏的内容...You wanted to go here: " + location.href +); 好了,现在我们就能在用户离开时获取对象位置,从而确切地知道她在地址栏中输入的内容。...当然,它不一定是一个完整的URL,例如,如果用户在地址栏中输入单词,它将自动被转换为搜索查询URL(IE默认为Bing),这当然可以被完整读取! ?
在地址栏中关键字(wd)变成了 “我爱%20Java” ? 而在 ie 浏览器地址栏中,关键字(wd)变成了 “%E6%88%91%E7%88%B1%20Java” ?...其实在第一个地址栏中,中文也是被编码的,只是浏览器展示时将其解码了,复制出来依然是编码状态(wd=%E6%88%91%E7%88%B1%20Java)。...造成这种问题的原因在于:W3C 标准规定,当 Content-Type 为 application/x-www-form-urlencoded 时,URL 中查询参数名和参数值中空格要用加号 + 替代,...而在 RFC 2396 中规定, URI 里的保留字符都需转义成 %HH 格式(Section 3.4 Query Component),因此空格会被编码成 %20,加号 + 本身也作为保留字而被编成...此类的实例可用于读取和写入此 URL 引用的资源。通常,创建一个到 URL 的连接需要几个步骤: ① 通过在 URL 上调用 openConnection 方法创建连接对象。
需要注意的是如果是通过copy paste代码到浏览器地址栏的话,IE及Chrome会自动去掉代码开头的javascript:,所以需要手动添加起来才能正确执行,而Firefox中虽然不会自动去掉,但它根本就不支持在地址栏运行...浏览器地址栏运行HTML代码 如果说上面那条小秘密知道的人还算多的话,这条秘笈知道的人就要少一些了,在非IE内核的浏览器地址栏可以直接运行HTML代码!...在一张HTML页面中,所有设置了ID属性的元素会在JavaScript的执行环境中创建对应的全局变量,这意味着 document.getElementById 像人的阑尾一样显得多余了。...但对于margin大法也只在子元素宽度小于容器宽度时管用,当子元素宽度大于容器宽度时此法失效。...但鲜有人去挑战不声明中间变量的情况,下面的代码给出了这种实现。蛮有创意 的。 var a=1,b=2;a=[b,b=a][0]; 万物皆对象 在JavaScript的世界,万物皆对象。
简而言之,一个 history 知道如何去监听浏览器地址栏的变化, 并解析这个 URL 转化为 location 对象, 然后 router 使用它匹配到路由,最后正确地渲染对应的组件。.../index.html [L] IE8, IE9 支持情况 如果我们能使用浏览器自带的 window.history API,那么我们的特性就可以被浏览器所检测到。...但是我们不推荐在实际线上环境中用到它,因为每一个 web 应用都应该渴望使用 browserHistory。 像这样 ?_k=ckuvup 没用的在 URL 中是什么?...当一个 history 通过应用程序的 push 或 replace 跳转时,它可以在新的 location 中存储 “location state” 而不显示在 URL 中,这就像是在一个 HTML...当访客点击“后退”和“前进”时,我们就会有一个机制去恢复这些 location state。 createMemoryHistory Memory history 不会在地址栏被操作或读取。
这里建议用“ if(window[‘对象名’]){…} ”的写法来判断 当确认对象已经存在时,用“对象名.变量名”跟“对象名[‘变量名’]”没什么区别。...里面的js代码不能使用 this, event对象, 因为这相当于浏览器地址栏, this 不代表 A 标签。...21.URL编程 javascript允许直接在URL地址栏写程序,这令js做的验证全部都是不安全,必须后台在验证一次。...如,在一个页面的地址栏输入:,在一个页面的地址栏输入:“javascript:alert(55);”,在一个页面的地址栏,那页面即可执行 alert 函数,同理也可执行任意的js函数。...例如下面代码在ie中是不会有弹出框的。 ie中是不会有弹出框的。
一般来讲,我们会在页面加载出来后检查地址栏,看看地址是否由有效的HTTPS连接提供。对吧? 那么,在继续深入之前,我们来看看这个页面。...Punycode钓鱼攻击 在默认情况下,许多web浏览器使用“Punycode”编码来表示URL中的Unicode字符,以防止同形异义字钓鱼攻击。...Mozilla目前还在商讨解决方案,Google已经在Chrome Canary 59中修复了这一漏洞,而且会在本月晚些时候发布Chrome Stable 58时,给出永久的修复方案。...在浏览器地址栏中输入about:config,并按回车键。 2. 在搜索栏中输入Punycode。 3....Chrome和Opera中并没有类似的设置,来手动关闭Punycode URL转义,所以Chrome用户请耐心等待几周,等待Stable 58发布。
Unicode转义和常规的16进制或8进制转义有些不同,因为Unicode转义可以包含在一个字符串中,或者是引用函数、变量或对象中。...声明全局对象 在屏蔽XSS过滤器的特定实例中,攻击代码经常隐藏在一个类似英语文本中的变量中。...在我们刚刚创造的对象中,寻找' & wonderful '属性,这个属性接着被一串字符分开。...当一个变量被设定时就会调用设值函数。第二个参数alert是函数调用赋值。这样,当x被赋值成1时,就会调用alert函数,并把1作为参数。...通过用URL编码,你可以隐藏JavaScript代码。这点很有用,特别是当传递XSS攻击代码的时候,我们为了更进一步地屏蔽过滤,可以进行双重URL编码。 第二个例子结合了第一个例子利用转义字符的技巧。
Unicode转义和常规的16进制或8进制转义有些不同,因为Unicode转义可以包含在一个字符串中,或者是引用函数、变量或对象中。...5声明全局对象 在屏蔽XSS过滤器的特定实例中,攻击代码经常隐藏在一个类似英语文本中的变量中。...在我们刚刚创造的对象中,寻找’ & wonderful ‘属性,这个属性接着被一串字符分开。...当一个变量被设定时就会调用设值函数。第二个参数alert是函数调用赋值。这样,当x被赋值成1时,就会调用alert函数,并把1作为参数。...通过用URL编码,你可以隐藏JavaScript代码。这点很有用,特别是当传递XSS攻击代码的时候,我们为了更进一步地屏蔽过滤,可以进行双重URL编码。 第二个例子结合了第一个例子利用转义字符的技巧。
$&'()*+,;=)用于在每个组件中起到分隔作用的,如=用于 表示查询参数中的键值对,&符号用于分隔查询多个键值对。当组件中的普通数据包含这些特殊字符时,需要对其进行编码。 ...Url编码默认使用的字符集是US-ASCII。例如a在US-ASCII码中对应的字节是0x61,那么Url编码之后得到的就 是%61,我们在地址栏上输入http://g.cn/search?...表单提交 当Html的表单被提交时,每个表单域都会被Url编码之后才在被发送。由于历史的原因,表单使用的Url编码实现并不符合最新的标准。...当提交表单时,Url编码使用的字符集就是gb2312。 ...另外,很多HTTP监视工具或者浏览器地址栏等在显示Url的时候会自动将Url进行一次解码(使用UTF-8字符集),这就是为什么当你在Firefox中访问Google搜索中文的时候,地址栏显示的Url包含中文的缘故
XmlHttpRequest 是 ajax 的核心机制,它是在 IE5 中首先引入的,是一种支持异步请求的技术。...对象的创建是在用户第一次访问服务器时产生的。...iii.在 session 中存放一个特殊标志。当表单页面被请求时,生成一个特殊的字符标志串,存在 session 中,同时放在表单的隐藏域里。...当Servlet第一次被装载时,Servlet引擎调用这个Servlet的init()方法,只调用一次。如果某个Sevlet需要特殊的初始化需要。...这是相对于init的可选方法,当Servlet即将被卸载时由Servlet引擎来调用,这个方法用来清除并释放在init方法中所分配的资源 9.Jsp类置对象(Web开发中的四个域对象) 范围小到大: page
$&'()*+,;=)用于在每个组件中起到分隔作用的,如=用于表示查询参数中的键值对,&符号用于分隔查询多个键值对。当组件中的普通数据包含这些特殊字符时,需要对其进行编码。...Url编码默认使用的字符集是US-ASCII。例如a在US-ASCII码中对应的字节是0x61,那么Url编码之后得到的就是%61,我们在地址栏上输入http://g.cn/search?...表单提交 当Html的表单被提交时,每个表单域都会被Url编码之后才在被发送。由于历史的原因,表单使用的Url编码实现并不符合最新的标准。...当提交表单时,Url编码使用的字符集就是gb2312。 文档字符集会影响encodeURI吗?...另外,很多HTTP监视工具或者浏览器地址栏等在显示Url的时候会自动将Url进行一次解码(使用UTF-8字符集),这就是为什么当你在Firefox中访问Google搜索中文的时候,地址栏显示的Url包含中文的缘故
受害者的浏览器开始解析这个HTML为DOM,DOM包含一个对象叫document,document里面有个URL属性,这个属性里填充着当前页面的URL。...倘若代码中引用了document.URL,那么,这部分字符串将会在解析时嵌入到HTML中,然后立即解析,同时,javascript代码会找到(alert(…))并且在同一个页面执行它,这就产生了xss的条件...文章给出了7条XSS防御规则:1、不插入不可信数据、在插入不可信数据到HTML元素内容前,执行HTML转义。2、在插入不可信数据到HTML元素通用属性前,执行属性转义。...3、在插入不可信数据到JS数据值前,执行JS转义。4、在插入不可信数据到HTML style属性值之前,执行CSS转义并严格校验。5、在插入不可信数据到URL参数值之前,执行URL转义。...7、插入混淆字符,在css中,/**/是注释字符,除了/**/外,字符”\”和结束符”\0″也是被忽略的,可以用来混淆字符。
1、什么是URL转发? 所谓URL转发是当你访问一个域名时,将会自动跳转到您所指定的另一个网络地址(URL)。...假设abc.com是您要访问的域名,则通过URL转发服务可以实现当访问http://www.abc.com时,自动转向访问另外一个URL,如:http://www.otherdomain.com/somedir...不隐藏路径URL转发:例如:http://b.com/指向http://a.com/xxx/(任意目录);当在浏览器地址栏中敲入http://b.com/后回车,IE浏览器的地址栏里显示的地址会由原来您敲入的...http://b.com/自动变为显示真正的目标地址http://a.com/xxx/; 隐藏路径的URL转发:例如:http://b.com/指向http://a.com/xxx/(任意目录);当在浏览器地址栏中敲入...http://b.com/后回车,IE浏览器的地址栏里显示的地址保持不变,仍是http://b.com/,但实际访问到的是http://a.com/xxx/的内容。
当 张三 访问该网站时,上述 url 就会从 张三 的浏览器发向银行,而这个请求会附带 张三 浏览器中的 cookie 一起发向银行服务器。大多数情况下,该请求会失败,因为他要求 张三 的认证信息。...但拦截不总是能成功,何况这个世界上还有大量根本不知道什么是浏览器的用户在用着可怕的 IE6。...因此,用户自己可以设置浏览器使其在发送请求时不再提供 Referer。当他们正常访问银行网站时,网站会因为请求没有 Referer 值而认为是 CSRF 攻击,拒绝合法用户的访问。...但拦截不总是能成功,何况这个世界上还有大量根本不知道什么是浏览器的用户在用着可怕的 IE6。...但拦截不总是能成功,何况这个世界上还有大量根本不知道什么是浏览器的用户在用着可怕的 IE6。
paste代码到浏览器地址栏的话,IE及Chrome会自动去掉代码开头的javascript:,所以需要手动添加起来才能正确执行,而Firefox中虽然不会自动去掉,但它根本就不支持在地址栏运行JS代码...浏览器当编辑器 方式一:地址栏输入下述内容 data:text/html, 方式二:控制台输入下述内容 document.body.contentEditable...=true 选取DOM元素 但当你在DOM中无法使用 jQuery 时,你依然可以在开发者控制台中做同样的事情。...2 + 2 $_ //4 $_ * $_ //16 $_ //16 清楚控制台和内存 clear() 刚存在内存中的$_结果也被清空了!...页面相关 页面拥有ID的元素会创建全局变量 console.log(sample)
在类似Gmail的AJAX软件中,浏览器的地址栏在用户选择功能和改变程序状态的时候保持不变,这让书签在这类程序中无法使用。...这个文件自动被RSH框架绑定需要被IE浏览器使用。正如刚才提到的,RSH使用一个隐藏的Iframe来保存和增加IE浏览器的改变。...在add()执行后的同时,新的地址作为一个链接地址将显示在浏览器的URL地址栏中。...使用这个功能的一个例子是在一个网页字符编辑器中,如果用户离开当前网页。当用户回退时,浏览器将会把对象返回给历史浏览变动监听器。...注意:historyData 并不随书签一起持续化,当浏览器关闭,浏览器缓存被清除和用户清除历史记录的时候,他也就消失了。
通过路由器,可以在不reload页面的情况下,实现页面部分刷新。那么,最关键的地方,就是如何设计路由器,如何让路由器工作?...当改变锚点时,页面的主体部分会切换内容,但是,整个页面不会被重新刷新。 那么,如何监听锚点变化?...1) 方法一:hashchange事件 hashchange事件遵从HTML5规范,它会在页面URL中的片段标识符(第一个#号开始到末尾的所有字符,包括#号)发生改变时触发。....html'); 这时,浏览器地址栏显示的URL变为http://www.somesite.com/subPage1.html; 同时,window.popstate事件被触发(可以开心的做你想做的事情了...用户可以在框架里自行配置。一般,默认是URL片段标识符,也就是hash锚点模式。
结合两者 现在我们就可以想到,如果在Ajax更新页面局部内容的同时,也在地址栏的URL里更新状态参数,就可以做出更完美的Ajax翻页了。...现在可以在不刷新的状况下操作浏览器地址栏和历史记录了,那同一站点的普通链接跳转是否都可以转变为Ajax来提升使用体验?是的,而且已经有了pjax[]这些专门完成这个功能的作品。...则与NETWORK,FALLBACK的位置顺序没有关系,如果是隐式声明需要在最前面 FALLBACK中的资源必须和manifest文件同源 当一个资源被缓存后,该浏览器直接请求这个绝对路径也会访问缓存中的资源...3.直接请求资源的绝对路径,只要该url被缓存过,那么所有的访问均是该资源的缓存,而与引用所在的宿主页面是否有manifest没有关系 给js中写上alert("更新"),访问该资源的url,结果没有变化...所有支持web Storage的浏览器均实现了以上标准方法,另外IE8还自己实现了remainingSpace用于查看剩余的存储空间 事件: onstorage,当发生存储相关操作的时候触发 标准中事件对象的属性
() (当对象设置为活动元素时) onAfterPrint() (在用户打印或预览打印作业后激活) onAfterUpdate() (更新源对象中的数据后在数据对象上激活) onBeforeActivate...() (用户双击表单元素或链接) onDeactivate() (当activeElement从当前对象更改为父文档中的另一个对象时激发) onDrag() (要求用户拖动对象) onDragEnd()...(当时间线结束时,onEnd事件将触发) onError() (加载文档或图像会导致错误) onErrorUpdate() (当更新数据源对象中的关联数据时出错时,对数据绑定对象触发) onFilterChange...() (在视觉筛选器完成状态更改时触发) onFinish() (当选取框完成循环时,攻击者可以创建攻击) onFocus() (当窗口获得焦点时,攻击者执行攻击字符串) onFocusIn() (当窗口获得焦点时...,此事件可能在文件开始播放之前触发) onMediaError() (用户在浏览器中打开包含媒体文件的页面,当出现问题时触发事件) onMessage() (当文档收到消息时触发) onMouseDown
领取专属 10元无门槛券
手把手带您无忧上云