国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
讓瀏覽器爆炸的JavaScript:HTML5 API 之 history.pushState

這兩天空間和朋友圈開始流行分享一個(gè)惡搞鏈接,在應(yīng)用中點(diǎn)擊可以直接導(dǎo)致應(yīng)用閃退,在瀏覽器中打開也能直接讓瀏覽器崩潰。這是怎么做到的呢?下面就來(lái)研究一下。

隨便在網(wǎng)上以“十二行代碼 瀏覽器”為關(guān)鍵詞搜一下,就有一大堆類似結(jié)果:

這十二行代碼的起源應(yīng)該是Twitter上的 IT Security Tweets ? @F1r3h4nd

Crash your friend’s browser and restart Iphone with a link which has this script: #0day// 把帶有下面這個(gè)腳本的鏈接發(fā)給你的朋友,能讓你朋友的瀏覽器崩潰,而且能讓iPhone重啟。

完整HTML代碼如下:

<html>	<body>		<script>			var total = "";			for (var i = 0; i < 1000000; i++)			{				total = total + i.toString();				history.pushState(0, 0, total);			}		</script>	</body></html>

有興趣的可以點(diǎn)擊這里測(cè)試一下。 【友情提醒:請(qǐng)先保存瀏覽器上的工作:) 拿來(lái)整人的被打死不負(fù)責(zé)哦~】

點(diǎn)擊完可能產(chǎn)生的后果:

  • PC端用瀏覽器打開:點(diǎn)開鏈接以后,電腦CPU內(nèi)存極有可能一路狂飆直至瀏覽器崩潰卡死。
  • 移動(dòng)端(安卓、iPhone)用三方瀏覽器打開:點(diǎn)開鏈接以后瀏覽器會(huì)閃退。
  • 移動(dòng)端(安卓、iPhone)用嵌入瀏覽器的應(yīng)用打開:在微博、微信客戶端中點(diǎn)開鏈接會(huì)閃退。
  • iPhone用Safari打開:點(diǎn)開鏈接之后,手機(jī)可能會(huì)注銷重啟。

以下是博主自己測(cè)試的結(jié)果:

下面就來(lái)稍微解釋一下上面這段js代碼是如何讓瀏覽器崩潰的。

這段代碼的核心就是 history.pushState() 方法。

這個(gè)方法是 HTML5 的一個(gè) API,用于向history添加當(dāng)前頁(yè)面的記錄。簡(jiǎn)單來(lái)說(shuō)就是在不刷新頁(yè)面,也不打開新頁(yè)面的情況下,改變?yōu)g覽器地址欄中的URL。這個(gè)技術(shù)可以解決AJAX遺留下來(lái)的問(wèn)題。它和AJAX結(jié)合后,有個(gè)新的稱呼是PJAX(淘寶目前正在使用)。

這里的代碼: history.pushState(0, 0, total); 只能起到一個(gè)效果,就是修改URL(只能修改當(dāng)前目錄后的字符,無(wú)法修改全部域名。且不會(huì)發(fā)生跳轉(zhuǎn)或發(fā)送請(qǐng)求)。然后這里代碼循環(huán)了1000000次,也就是說(shuō)URL修改了1000000次,每次新的URL都是之前一次的后面再加上 i.toString() 。這樣快速不停地向history中添加記錄,最終就會(huì)導(dǎo)致內(nèi)存占用迅速增大到機(jī)器無(wú)法承受,然后瀏覽器崩潰。

所以PC上面才會(huì)出現(xiàn)內(nèi)存和CPU突然一路飆升,而手機(jī)的內(nèi)存和處理器本身就跟PC沒得比,所以崩潰也是自然的。至于iPhone上的Safari是如何讓iPhone重啟的,這個(gè)就不得而知了。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Html5使用history對(duì)象history.pushState()和history.replaceState()方法添加和修改瀏覽歷史記錄。
HTML5 API——無(wú)刷新更新地址 history.pushState/replaceState 方法
HTML5大前端中的History API技能詳解
如何讓搜索引擎抓取AJAX內(nèi)容?
js點(diǎn)擊返回跳轉(zhuǎn)到指定頁(yè)面實(shí)現(xiàn)過(guò)程
ajax與HTML5 history pushState/replaceState實(shí)例
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服