javascript - Hittade fs.open med icke-litterärt argument vid index 0 när man använder URL byggd från argument
Jag försöker göra något liknande detta (typescript)
window.open(`https://somelink/certificate/${regNumber}?registrationNumber=${type}`);
där regNumber och type är mycket dynamiska. ESLint ger mig ett fel Found fs.open with non literal argument at index 0 security/detect-non-literal-fs-filename
Jag vet att detta är https://owasp.org/www-community/attacks/Path_Traversal path traversal-sårbarhet, men jag kan helt enkelt inte lista ut hur man kommer runt den. Några idéer? Tack
Skärmdump :
Svar #1
I ditt fall kan denna regel tryggt ignoreras.
Vad regeln gör är att den skapar en lista över dessa objektnycklar, som inkluderar open, och sedan kontrollerar om någon egenskap som nås i koden (eller, mer specifikt, någon MemberExpression) matchar en av dessa nycklar.
Så, medan det genererar en varning för fs.writeFile och fs.open, till exempel, kommer det också att generera en för window.open - trots att klient-sidans window-objekt är helt annorlunda än fs.
Metoderna fs tillåter omfattande manipulering av serverns filsystem. Att tillåta godtycklig åtkomst till detta är en dålig idé.
window.open tillåter endast en klientwebbläsare att öppna ett fönster till en annan adress, vilket är nästan ofarligt och har mycket liten chans att orsaka skada.
Det finns fortfarande en potentiell liten sårbarhet, men den potentiella sårbarheten kommer att finnas oavsett din window.open-kod - om webbservern är felkonfigurerad och tillåter godtyckliga URL-åtkomster att göra något olämpligt (vilket skulle vara ganska osannolikt), innebär det att det finns ett stort problem att åtgärda på servern - men det är inte ett problem som klientkod bör försöka hantera.
Om projektet du arbetar med inte innehåller någon server-sida kod, kan du känna dig fri att inaktivera regeln security/detect-non-literal-fs-filename för hela projektet.
