Jos olet vasta aloittamassa verkkokehitys- tai Node.js-matkaasi, et ehkä tiedä, kuinka tärkeää sovelluksesi suojaaminen on.
Express.js tarjoaa tehokkaan ratkaisun taustaverkkosovellusten rakentamiseen, mutta se ei ole suojattu. Kun rakennat verkkosovellusta, tarvitset riittävät suojatoimenpiteet käyttäjien tietojen suojaamiseksi.
Onneksi on olemassa menetelmiä, joilla voit parantaa Express.js-sovellustesi turvallisuutta. Kaikki nämä vinkit auttavat vahvistamaan sovellusten turvallisuutta eri lähestymistapojen avulla.
Määritä Express.js-sovellus
Aloita asettamalla demo Express.js-verkkopalvelin käyttämällä npm, Node Package Manager. Luo projektikansio paikallisesti ja vaihda hakemisto siihen terminaalissasi.
mkdir express-projekti
cd express-projekti
Luo seuraavaksi a package.json tiedosto juurihakemistossa.
npm init -y
Asenna Express.js.
npm install express
Luo lopuksi a server.js tiedosto projektikansiosi juurihakemistoon ja lisää seuraava koodi perustaaksesi perusverkkopalvelimen.
konst express = vaatia("ilmaista")
konst sovellus = express()
konst PORT = process.env. SATAMA || 5000app.get("/", (req, res) => {
res.json("Hei maailma!")
})
app.listen (PORT, () => {
konsoli.Hirsi(` Palvelin käynnistyy http://localhost:${PORT}`)
})
Käynnistä palvelin tällä komennolla:
solmupalvelin.js
Olet nyt valmis tutustumaan joihinkin toimenpiteisiin, joilla voit suojata Express.js-sovelluksesi.
1. Express.js-sovellusten suojaaminen kypärän avulla
Kypärä on Node.js-väliohjelmisto, joka auttaa suojaamaan palvelinpuolen sovelluksia asettamalla erilaisia HTTP-suojausotsikoita. Nämä otsikot tarjoavat tärkeitä puolustusmekanismeja vastaan yleisiä taustatietoturva-aukkoja, kuten cross-site scripting (XSS), cross-site request forgery (CSRF) ja monet muut.
Express.js ei määritä oletusarvoisesti HTTP-suojausotsikoita, mikä jättää mahdollisen suojausvirheen, joka paljastaa mahdollisesti arkaluontoiset otsikot. Näiden tietojen avulla haitalliset toimijat voivat päästä luvattomasti sovellukseesi tai muuten häiritä sovellustasi.
Kypärä toimii tärkeänä suojana varmistaen, että sovelluksen HTTP-vastaukset ottavat käyttöön tarvittavat suojatoimenpiteet, mikä vähentää merkittävästi mahdollista hyökkäyspintaa.
Express.js-sovellusten turvallisuuden tutkiminen ilman kypärää
Kun palvelin on käynnissä, tarkista sovelluksen otsikot. Mene eteenpäin ja tehdä HTTP-pyyntöjä API: lle Postmanin avulla tai mikä tahansa muu asiakas, joka näyttää vastausotsikot. Useimmat selaimet sisältävät joukon kehittäjätyökaluja, joiden avulla voit tehdä niin.
Kun lähetät pyyntöjä kotipäätepisteeseen, sinun tulee havaita samanlaisia tuloksia Otsikot Vastauksen osa Postmanissa.
Huomaa, X-Powered-By otsikko. Tavallisesti taustateknologiat käyttävät tätä otsikkoa osoittamaan kehyksen tai muun ohjelmiston, joka käyttää verkkosovellusta. Yleensä kannattaa poistaa X-Powered-By otsikko tuotantoympäristössä.
Näin estät mahdollisia hyökkääjiä saamasta arvokasta tietoa, jota he voisivat käyttää teknologiapinoosi liittyvien tunnettujen haavoittuvuuksien hyödyntämiseen.
Testaa Express.js-palvelimen suojausasetuksia
Käytämme sovelluksiesi suojaustilan arvioimiseen Suojausotsikot online-työkalu. Tämä sovellus on suunniteltu erityisesti arvioimaan HTTP-otsikoiden suojausasetuksia asiakas- ja palvelinpuolen sovelluksille.
Ensin sinun on asetettava paikallinen Express.js-palvelin käytettäväksi Internetin kautta. Tämän saavuttamiseksi on kaksi mahdollista lähestymistapaa: Express.js-sovelluksen käyttöönotto pilvipalvelimella tai ngrokin käyttö.
Käyttääksesi sitä, lataa ngrok zip-tiedosto, pura suoritettava tiedosto ja käynnistä sovellus. Suorita sitten seuraava komento isännöidäksesi paikallista Express.js-palvelinta ngrokilla.
ngrok http 5000
ngrok tulostaa lyhyitä tietoja, jotka näyttävät tältä:
Kopioi toimitettu edelleenlähetys-URL-osoite ja liitä se kohtaan Suojausotsikot' syöttöruutua ja napsauta Skannata -painiketta.
Kun turvallisuusarviointi on valmis, sinun pitäisi saada vastaava raportti.
Raportin perusteella on ilmeistä, että Express.js-palvelin sai huonon F arvosana. Tämä alhainen arvosana johtuu olennaisten HTTP-suojausotsikoiden puuttumisesta palvelimen kokoonpanosta – niiden puuttuminen jättää palvelimen alttiiksi mahdollisille tietoturvariskeille.
Integroi Helmet Express.js-sovellukseen
Siirry nyt eteenpäin ja integroi Helmet Express.js-sovellukseesi. Suorita alla oleva komento asentaaksesi riippuvuus.
npm asenna kypärä
Päivitä server.js-tiedostosi ja tuo Helmet.
konst kypärä = vaatia("kypärä")
Lisää nyt Helmet Express.js-sovellukseesi.
app.use (kypärä())
Lopuksi pyöritä kehityspalvelin, kopioi edelleenlähetyslinkki ngrokin terminaaliin ja liitä se kohtaan Turvallisuusotsikko syöttökenttään paikallisen palvelimen uudelleenskannaukseen. Kun uudelleenskannaus on valmis, sinun pitäisi nähdä seuraavanlaisia tuloksia:
Helmetin integroinnin jälkeen Express.js sisältää useita tärkeitä suojausotsikoita HTTP-vastaukseen. Tämä merkittävä parannus sai Express.js-sovelluksen siirtymään A arvosana.
Vaikka Helmet ei ole idioottivarma ratkaisu, se parantaa merkittävästi Express.js-sovelluksesi yleistä turvallisuutta.
2. Express.js-sovellusten suojaaminen Joi-syötteen tarkistuskirjastolla
Joi on syötteiden vahvistuskirjasto, joka auttaa suojaamaan Express.js-sovelluksia tarjoamalla kätevän tavan tarkistaa ja puhdistaa käyttäjän syöte. Määrittämällä vahvistusskeemoja Joilla voit määrittää saapuville tiedoille odotetun rakenteen, tietotyypit ja rajoitukset.
Joi tarkistaa syötteen määritettyä skeemaa vasten ja varmistaa, että se täyttää määritetyt kriteerit. Tämä auttaa estämään yleisiä tietoturva-aukkoja, kuten tietojen lisäämistä, sivustojen välistä komentosarjaa (XSS) ja muita tietojen manipulointihyökkäyksiä.
Noudata näitä ohjeita integroidaksesi Joi sovellukseesi.
- Asenna Joi.
npm install joi
- Tuo Joi server.js-tiedostoosi.
konst Joi = vaatia('joi');
- Luo Joi-tietojen validointiskeema, joka määrittää odotetun rakenteen ja mahdolliset rajoitukset syöttötiedoille.
konst schema = Joi.object({
sähköposti: Joi.string().email().required(),
salasana: Joi.string().min(5).max(16).edellytetään()
}); - Vahvista kaikki saapuvat tiedot määritetyn skeeman avulla.
konst { virhe, arvo } = schema.validate (req.body);
jos (virhe) {
// Käsittele vahvistusvirhe
// Esimerkiksi palauttaa virhevastauksen
palata res.status(400).json({ virhe: error.details[0].viesti });
}
Toteuttamalla nämä vaiheet voit hyödyntää Join syötteiden vahvistusominaisuuksia Express.js-sovellustesi suojaamiseksi. Tämä varmistaa, että saapuvat tiedot täyttävät määritellyt rajoitukset, mikä estää mahdolliset tietojen manipuloinnin turvallisuusuhat.
3. Express.js-sovellusten suojaaminen CORS-mekanismin avulla
Cross-Origin Resource Sharing (CORS) on mekanismi, jolla verkkopalvelimet hallitsevat, mitkä lähteet – asiakkaat tai muut palvelinpuolen sovellukset – voivat käyttää suojattuja resurssejaan. Tämä mekanismi auttaa suojaamaan luvattomilta lähteiden välisiltä pyynnöiltä ja ehkäisemään ongelmia, kuten cross-site scripting (XSS) -hyökkäyksiä.
Voit suojata Express.js-sovellukset CORS: n avulla seuraavasti:
- Asenna CORS-paketti.
npm asentaa cors
- Vaadi ja käytä CORS-väliohjelmistoa server.js-tiedostossa.
konst cors = vaatia("cors");
app.use (cors());
Integroimalla CORS-väliohjelmiston Express.js-sovellukseesi otat Cross-Origin Resource Sharing käyttöön. Tämä varmistaa, että vähennät mahdollisia tietoturvariskejä, jotka liittyvät ristiin lähteisiin pyyntöihin.
Palvelinpuolen sovellusten suojaaminen helposti
Voit parantaa Express.js-sovellustesi turvallisuutta käyttämällä yhtä tai useampaa näistä tärkeistä toimenpiteistä.
Vaikka palvelinpuolen sovellusten suojaamiseen on monia toimenpiteitä ja lähestymistapoja, tärkeintä on, että sinun tulee asettaa tietoturva etusijalle koko kehitystyön elinkaaren ajan. Tämä on tehtävä, joka alkaa suunnitteluvaiheessa ja jatkuu aina käyttöönottoon asti.