Bramkarz na urlopie
Byłem zmuszony podjąć decyzję o zakończeniu projektu Bramkarz, który rozpocząłem jakieś 2 miesiące temu. W tym wpisie pokrótce wyjaśnię dlaczego. Dziurawe zabezpieczenie Bramkarz był w założeniu narzędziem pokroju Hagany, ale dla projektów, które wykorzystywały natywne moduły ES zamiast, tradycyjnego dla Node.js, systemu modułów CJS. To wymuszało wykorzystanie eksperymentalnego API loaderów. I chociaż całość była dość toporna z powodu ograniczeń składni ESM (m.in. brak dynamicznych eksportów), to działało to nadspodziewanie dobrze. Tylko że był jeden mały problem: tego typu zabezpieczenie można było banalnie prosto obejść. Wystarczyło stworzyć plik JS z rozszerzeniem .cjs. Dla Node’a oznacza to, że w tym pliku znajduje się kod w składni CJS. Czyli taki, który jest wczytywany przy pomocy require(), nie zaś – import. A więc taki, który omija całe zabezpieczenie dodane przez Bramkarza przy pomocy loadera ESM… Próba ratowania sytuacji Na szczęście Node.js posiada flagę --require, która pozwala wczytać na start moduł podany jako wartość tej flagi. W teorii zatem wystarczyłoby przygotować moduł CJS nadpisujący operacje na plikach i dorzucić flagę --require do naszego skryptu odpalającego Bramkarza.
Chcesz więcej? Sprawdź w oryginale!
Przejdź do artykułu