幀Buster…巴斯特碼假設(shè)您不希望其他站點(diǎn)在<iframe>:<iframe src="http://example.org"></iframe>因此,您將反框架、破壞框架的JavaScript插入到所有頁(yè)面中:/* break us out of any containing iframes */if (top != self) { top.location.replace(self.location.href); }太棒了!現(xiàn)在你“破獲”或突破任何包含IFRAME的自動(dòng)。除了一個(gè)小問(wèn)題。事實(shí)證明,你的破壞幀代碼可以被破解, 如圖所示:<script type="text/javascript">
var prevent_bust = 0
window.onbeforeunload = function() { prevent_bust++ }
setInterval(function() {
if (prevent_bust > 0) {
prevent_bust -= 2
window.top.location = 'http://example.org/page-which-responds-with-204'
}
}, 1) </script>此代碼執(zhí)行以下操作:每次瀏覽器試圖從當(dāng)前頁(yè)面導(dǎo)航時(shí),通過(guò)window.onbeforeunload事件處理程序設(shè)置一個(gè)計(jì)時(shí)器,每毫秒通過(guò)setInterval(),如果它看到計(jì)數(shù)器遞增,則將當(dāng)前位置更改為攻擊者控件的服務(wù)器該服務(wù)器使用HTTP狀態(tài)代碼向頁(yè)面提供服務(wù)204,這不會(huì)導(dǎo)致瀏覽器在任何地方導(dǎo)航。我的問(wèn)題是-這更像是一個(gè)JavaScript難題,而不是一個(gè)實(shí)際的問(wèn)題-你怎么能打敗那個(gè)破壞幀的破壞者?我有一些想法,但在我的測(cè)試中沒(méi)有什么效果:試圖清除onbeforeunload事件通過(guò)onbeforeunload = null無(wú)效果添加alert()停止進(jìn)程,讓用戶知道它正在發(fā)生,但沒(méi)有以任何方式干擾代碼;單擊“確定”可以繼續(xù)正常運(yùn)行。我想不出有什么辦法setInterval()定時(shí)器我不是一個(gè)JavaScript程序員,所以下面是我對(duì)您的挑戰(zhàn):嘿,巴斯特,你能把那個(gè)破相框的家伙弄壞嗎?
幀Buster…巴斯特碼
慕蓋茨4494581
2019-06-09 17:41:11