Ajax和pjax
AJAX,即“异步Javascript和XML”,是一种创建快速动态网页的技术。AJAX可以通过在后台与服务器交换少量数据,使网页异步更新。这意味着可以在不重新加载整个网页的情况下更新网页的一部分-无需刷新操作。
然而,ajax应用程序也会导致其他问题,这很容易导致浏览器无法向前和向后移动。这是一个令人头疼的问题,开发人员必须增加工作量(例如,通过使用隐藏的iframe或更改location.hash值)来解决这个问题。
为了解决传统ajax带来的问题,在HTML5中引入了一个新的API:history.pushState。在它与ajax结合后,一个新的名称是pjax。是一种基于ajax history.pushState的新技术,可以在不刷新的情况下改变页面的内容,改变页面的URL。Pjax是ajax pushState的封装,支持本地存储、动画等多种功能。目前支持jquery、qwrap、kissy等版本。
HTML5.history.pushState
HTML5可以操纵浏览器历史,通过pushState和replaceState接口改变当前页面的URL。
PushState是将指定的URL添加到浏览器历史中,并存储当前的历史记录点。ReplaceState是用指定的URL替换当前的URL。同时,这些方法将与window . on state事件一起工作。
历史。PushState(数据、标题、URL):在历史堆栈顶部添加一条记录;触发onpopstate事件时,数据作为参数传递;Title是页面标题,目前所有浏览器普遍忽略。Url是页面地址,它是可选的,默认为当前页面地址。具体细节:
状态该对象是一个JavaScript状态对象,一个用于记录历史点的额外对象,可以为空。它与由pushState()方法创建的新历史实体相关。用于存储有关要插入历史记录的条目的信息。
标题—所有浏览器通常都会忽略此参数,尽管将来可能会用到它。现在,使用它最安全的方法是传递一个空字符串来防止将来的修改,或者传递一个短标题来表示状态。
Url—此参数用于传递新历史实体的Url。新URL必须与现有URL在同一个域中,否则pushState()将引发异常。此参数是可选的。如果为空,将被设置为文档的当前url。
十二行代码分析
htmlbodyscriptvar total=for(var I=0;i1000000I){ total=total I . ToString();history.pushState(0,0,总计);}/script/body/html以上是十二行代码,重点在于total的url的循环:history.pushState(0,0,total);不断修改url,循环1,000,000次,不断在历史堆栈中添加记录,会导致CPU和内存占用率高,火狐、chrome和safari浏览器崩溃,重启iPhone。
在XP虚拟机中测量(i7单核3.4G,512内存):
当上面的周期数超过10万时,CPU和内存利用率瞬间达到100%,然后崩溃崩溃;
当上述循环次数减少到10000次左右时,CPU和内存利用率在20秒左右逐渐增加到100%,然后崩溃崩溃;
当上述周期数减少到500左右时,CPU利用率逐渐增加到100%,然后瞬间回到稳定状态,内存利用率从130M左右增加到230M左右,打开页面192.168.56.106/12.html后,地址栏中的链接变为:http://192.168.56。
可以看到,当记录通过循环不断添加到历史堆栈中时,页面会刷新到跳转的新地址,这是循环积累的“伪地址”。当这个长度超过极限时,就会造成dos,攻击的效果和效率完全取决于循环次数和tagret的硬件配置。
相关辩护
相信大家的安全意识已经很强了,但是警钟应该是要敲响的。不要相信任何信息,如链接、附件、电子邮件、图片等。陌生人以任何方式寄给你的。当然,你也不能排除朋友的恶作剧伤害了你的朋友。所以,你的朋友们要时刻记得Ctrl S,否则崩溃的时候会很郁闷。
互联网自诞生以来,就一直遭受黑客攻击。早期黑客攻击的目的是技术测试和炫耀。但随着全球互联网基础设施的扩张、连接的无限增长和用户数量的快速膨胀,黑客攻击的频率也相应增加,黑客技术不断发展,以非法获取经济利益为目的的黑色产业链逐渐出现。互联网安全防护技术水平突飞猛进。路一尺高,魔一尺高。在这个互联网时代,攻防每时每刻都在发生。
网络安全防护七分靠技术,三分靠意识。要保护这些问题,除了依靠安全厂商的产品和服务,还需要不断提高网络安全意识。比如:注意个人密码的管理,注意个人隐私的保护,不要轻易接入公共wifi,不要轻信不熟悉/熟悉的朋友的链接或文件,注意移动支付的安全性,不要让设备“裸奔”等等
摘要
以上就是本文的全部内容,希望能给大家的学习或工作带来一些帮助。有问题可以留言交流。