JavaScript programeri moraju imati: Vodič za učinkovito otklanjanje pogrešaka i sigurnu praksu kodiranja
JavaScript programeri moraju imati: Vodič za učinkovito otklanjanje pogrešaka i sigurnu praksu kodiranja
JavaScript, kao temelj Web razvoja, naširoko se koristi u front-endu, back-endu i mobilnim terminalima. Međutim, dinamičke značajke JavaScripta i složenost okruženja izvršavanja također ga čine područjem visokog rizika za bugove i sigurnosne ranjivosti. Ovaj će članak, u kombinaciji s raspravama o JavaScriptu na X/Twitteru, pružiti niz praktičnih vještina i najboljih praksi za JavaScript programere iz perspektive alata za otklanjanje pogrešaka, sigurnog kodiranja i optimizacije performansi, kako bi se svima pomoglo da pišu robusniji i sigurniji kod.
I. Zbogom nagađanju: Učinkovite vještine otklanjanja pogrešaka u JavaScriptu
Otklanjanje pogrešaka je neizostavan dio procesa razvoja. Umjesto da se izgubite u "console.log" metodi, bolje je savladati učinkovitije alate i vještine za otklanjanje pogrešaka.
1. Koristite alate za razvojne programere preglednika:
Moderni preglednici imaju ugrađene moćne alate za razvojne programere koji pružaju funkcije kao što su otklanjanje pogrešaka s prekidnim točkama, nadzor mreže i analiza performansi.
-
Postavite prekidne točke: Postavite prekidne točke na ključnim mjestima u kodu kako biste zaustavili izvršavanje programa, što olakšava programerima da provjere vrijednosti varijabli i stanje programa. Alati za razvojne programere preglednika omogućuju vam postavljanje prekidnih točaka izravno u izvornom kodu klikom na brojeve redaka.
-
Izvršavanje korak po korak: Koristite funkciju izvršavanja korak po korak (Step Over, Step Into, Step Out) za izvršavanje koda redak po redak i promatranje tijeka izvršavanja programa.
-
Pogledajte stog poziva: Stog poziva bilježi redoslijed poziva funkcija, što može pomoći programerima da brzo lociraju problem.
-
Nadziranje izraza: Dodajte izraze koje je potrebno nadzirati na ploču "Watch" u alatima za razvojne programere kako biste u stvarnom vremenu vidjeli promjene vrijednosti izraza.
2. Koristite proširenje preglednika Toast.log:
Kao što je @@Shefali__J spomenuo na Twitteru, Toast .log je vrlo korisno proširenje preglednika koje može izravno prikazati pogreške konzole, upozorenja i informacije o zapisima na stranici bez otvaranja konzole alata za razvojne programere. Ovo je vrlo korisno za brzo lociranje problema i poboljšanje učinkovitosti otklanjanja pogrešaka.
Koraci:
- Potražite "Toast .log" u Chrome web trgovini ili drugim trgovinama proširenja preglednika i instalirajte ga.
- Nakon instalacije, osvježite svoju web stranicu.
- Kada JavaScript kod generira pogreške, upozorenja ili zapise, Toast .log će ih prikazati na stranici u obliku Toast poruka.
3. Koristite Source Maps:
Za JavaScript kod koji je komprimiran ili preveden (na primjer, pomoću Babel ili TypeScript), Source Maps mogu mapirati komprimirani kod natrag u izvorni kod, što olakšava programerima otklanjanje pogrešaka.
Konfiguracija:
- Provjerite je li vaš alat za izgradnju (npr. Webpack, Parcel) ispravno konfiguriran za generiranje datoteka Source Maps.
- Omogućite podršku za Source Maps u alatima za razvojne programere preglednika.
4. Koristite naredbu debugger:
Izravno umetanje naredbe debugger u kod može prisiliti program da se zaustavi kada se izvrši ta naredba i automatski otvoriti alate za razvojne programere preglednika.
function myFunction(arg) {
// ...
debugger; // Program će se ovdje zaustaviti
// ...
}
5. Koristite profesionalne debuggere za JavaScript:
Za složenije projekte, razmislite o korištenju profesionalnih debuggera za JavaScript, kao što su debuggeri integrirani u Visual Studio Code ili WebStorm IDE. Ovi debuggeri obično pružaju moćnije funkcije, kao što su udaljeno otklanjanje pogrešaka, analiza memorije itd.
II. Spriječite probleme prije nego što se dogode: Najbolje prakse sigurnog kodiranja u JavaScriptu
Sigurnosni problemi JavaScript koda ne smiju se zanemariti. Kao što je @@badcrack3r spomenuo na Twitteru, otkrivanje pristupnog tokena u JavaScript datoteci može dovesti do ozbiljnih posljedica.1. Izbjegavajte pohranjivanje osjetljivih informacija na strani klijenta:
Apsolutno nikada ne pohranjujte osjetljive informacije kao što su API ključevi, korisničke lozinke itd. na strani klijenta. Te informacije trebaju biti pohranjene na strani poslužitelja i pristupane putem sigurnih API sučelja.
2. Strogo validirajte i filtrirajte korisnički unos:
Nikada ne vjerujte korisničkom unosu. Strogo validirajte i filtrirajte sve podatke koje unose korisnici kako biste spriječili sigurnosne propuste kao što su XSS (Cross-Site Scripting) napadi i SQL injekcije.
Primjer:
// HTML escape korisničkog unosa za sprječavanje XSS napada
function escapeHtml(text) {
var map = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
};
return text.replace(/[&<>"]/g, function(m) { return map[m]; });
}
// Dohvati korisnički unos
let userInput = document.getElementById("userInput").value;
// Escape korisničkog unosa
let safeInput = escapeHtml(userInput);
// Prikaži siguran korisnički unos na stranici
document.getElementById("displayArea").innerHTML = safeInput;
3. Koristite CSP (Content Security Policy):
CSP je HTTP zaglavlje odgovora koje ograničava izvore iz kojih preglednik učitava resurse, sprječavajući ubacivanje zlonamjernih skripti.
Konfiguriranje CSP-a:
Konfigurirajte CSP zaglavlje odgovora na strani poslužitelja, na primjer:
Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com; style-src 'self' 'unsafe-inline'; img-src 'self' data:;
4. Redovito skenirajte kod za ranjivosti:
Koristite profesionalne alate za sigurnosno skeniranje, kao što su Snyk, OWASP ZAP itd., za redovito skeniranje koda za sigurnosne ranjivosti i pravovremeno ih popravite.
5. Koristite alate kao što je SecretFinder za otkrivanje curenja osjetljivih informacija:
Kao što je spomenuto na Twitteru od strane @@chc_course, SecretFinder je Python alat koji se može koristiti za otkrivanje potencijalnih curenja osjetljivih informacija u JavaScript datotekama, kao što su API ključevi, pristupni tokeni itd.
Koraci:
- Instalirajte SecretFinder:
pip install secretfinder - Koristite SecretFinder za skeniranje JavaScript datoteke:
python secretfinder.py -i your_javascript_file.js -o output.txt - Provjerite izlaznu datoteku kako biste vidjeli ima li curenja osjetljivih informacija.
6. Koristite HTTPS protokol:
Pobrinite se da web stranica koristi HTTPS protokol za šifriranje prenesenih podataka i sprječavanje napada posrednika (man-in-the-middle).
III. Optimizacija performansi: Poboljšanje učinkovitosti JavaScript koda
Performanse JavaScript koda izravno utječu na korisničko iskustvo. Optimizacija performansi JavaScript koda može poboljšati brzinu učitavanja i odziv web stranice.
1. Smanjite HTTP zahtjeve:
Smanjite što je više moguće broj HTTP zahtjeva potrebnih za učitavanje stranice, kao što je spajanje CSS i JavaScript datoteka, korištenje CSS Sprites itd.
2. Komprimirajte JavaScript kod:
Koristite alate (kao što su UglifyJS, Terser) za komprimiranje JavaScript koda, smanjujući veličinu datoteke.
**3. Odgodite učitavanje nekritičnih resursa:**4. Korištenje CDN-a:
Postavite statičke resurse (kao što su JavaScript datoteke, CSS datoteke, slike itd.) na CDN (mreža za isporuku sadržaja) kako biste poboljšali brzinu učitavanja resursa.
5. Izbjegavanje curenja memorije:
Pazite da na vrijeme oslobodite objekte i varijable koje se više ne koriste kako biste izbjegli curenje memorije.
6. Optimizacija DOM operacija:
Pokušajte smanjiti DOM operacije i izbjegavajte česte DOM operacije koje uzrokuju zastajkivanje stranice. Korištenje documentFragment može skupno ažurirati DOM, poboljšavajući performanse.
7. Korištenje Web Workers:
Za složene računske zadatke možete koristiti Web Workers za njihovo izvršavanje u pozadinskoj niti, izbjegavajući blokiranje glavne niti.
8. Korištenje Vanilla JavaScript:
Kao što je @@mannay spomenuo na Twitteru, u nekim jednostavnim scenarijima korištenje izvornog JavaScripta (Vanilla JavaScript) može biti učinkovitije od korištenja okvira.
9. Optimizacija povlačenja i ispuštanja (Drag & Drop)
Kao što je @@midudev spomenuo na Twitteru @atlaskit/pragmatic-drag-and-drop, za scenarije povlačenja i ispuštanja, odabir laganih biblioteka visokih performansi također je važan način za optimizaciju performansi.
IV. Nastavite učiti: prihvatite budućnost JavaScripta
JavaScript jezik i ekosustav se neprestano razvijaju. Kao JavaScript programer, morate neprestano učiti nove tehnologije i alate kako biste ostali konkurentni.
1. Pratite najnovija tehnička kretanja:
Pratite najnovija tehnička kretanja u JavaScript zajednici, kao što su novi ECMAScript standardi, novi okviri i biblioteke itd.
2. Sudjelujte u projektima otvorenog koda:
Sudjelovanje u projektima otvorenog koda može vam pomoći da naučite iskustva drugih programera i poboljšate svoje vještine programiranja.
3. Čitajte izvrstan kod:
Čitanje izvrsnog koda može vam pomoći da naučite dobar stil programiranja i obrasce dizajna.
4. Praksa:
Kao što su mnogi korisnici podijelili poveznice na Twitteru, dovršavanje nekih projekata najbolji je način za učenje. Bilo da se radi o maloj igri ili složenoj web aplikaciji, samo praksa može istinski razumjeti i ovladati JavaScript znanjem i vještinama.





