9 turvallisuusvinkkiä suojaamaan verkkosivustoasi hakkereilta

Et ehkä usko, että sivustollasi on mitään syytä hakkerointiin, mutta verkkosivustot vaarantuvat koko ajan. Suurin osa verkkosivustojen tietoturvaloukkauksista ei ole varastaa tietojasi tai sotkeutua verkkosivustosi kanssa verkkosivujen asettelu , mutta yrittää sen sijaan käyttää palvelinta sähköpostin välittäjänä roskapostia varten tai perustaa väliaikaisen verkkopalvelimen normaalisti laittomien tiedostojen palvelemiseen. Muita hyvin yleisiä tapoja väärinkäyttää koneita ovat palvelimien käyttäminen botnet-osana tai Bitcoins-kaivos. Sinua voi jopa lyödä lunnasohjelma.

Hakkerointi suoritetaan säännöllisesti Internetissä pyyhkäisevien automaattisten komentosarjojen avulla, jotta voidaan hyödyntää tunnettuja verkkosivustojen tietoturvaongelmia ohjelmistoissa. Tässä on yhdeksän suosituinta vinkkiä, joiden avulla voit pitää sinut ja sivustosi turvassa verkossa.

01. Pidä ohjelmisto ajan tasalla

Se saattaa tuntua itsestään selvältä, mutta varmistaa, että pidät kaikki ohjelmistot ajan tasalla, on elintärkeää pitää sivustosi turvassa. Tämä koskee sekä palvelimen käyttöjärjestelmää että kaikkia verkkosivustollasi mahdollisesti käyttämiäsi ohjelmistoja, kuten CMS tai foorumi. Kun ohjelmistoista löytyy verkkosivuston tietoturva-aukkoja, hakkerit yrittävät nopeasti käyttää niitä väärin.

Jos käytät hallittua hosting-ratkaisua, sinun ei tarvitse huolehtia niin paljon käyttöjärjestelmän tietoturvapäivitysten käytöstä kuin isäntäyrityksen tulisi huolehtia tästä.

Jos käytät verkkosivustollasi kolmannen osapuolen ohjelmistoja, kuten sisällönhallintajärjestelmää tai foorumia, varmista, että asennat kaikki suojauskorjaukset nopeasti. Useimmilla toimittajilla on postituslista tai RSS-syöte, jossa on yksityiskohtaiset tiedot verkkosivustojen tietoturva-asioista. WordPress , Umbraco ja monet muut CMS: t ilmoittavat käytettävissä olevista järjestelmäpäivityksistä, kun kirjaudut sisään.

Monet kehittäjät käyttävät Composerin, npm: n tai RubyGemsin kaltaisia ​​työkaluja hallitakseen ohjelmistiriippuvuutensa, ja tietoturva-aukkoja, jotka näkyvät paketissa, johon luotat mutta johon et kiinnitä huomiota, on yksi helpoimmista tavoista päästä kiinni. Varmista, että pidät riippuvuutesi ajan tasalla, ja käytä esimerkiksi työkaluja Gemnasium saada automaattisia ilmoituksia, kun jossakin komponentissa on ilmoitettu haavoittuvuudesta.

02. Varo SQL-injektiota

SQL-injektiohyökkäykset ovat silloin, kun hyökkääjä käyttää verkkolomakekenttää tai URL-parametria päästäksesi tietokantaan tai käsittelemään sitä. Kun käytät tavallista Transact SQL: ää, kyselyyn on helppo lisätä tietämättään väärennetty koodi, jota voidaan käyttää taulukoiden vaihtamiseen, tietojen saamiseen ja tietojen poistamiseen. Voit estää tämän helposti käyttämällä aina parametrisoituja kyselyjä, useimmilla verkkokielillä on tämä ominaisuus ja se on helppo toteuttaa.

Harkitse tätä kyselyä:

Kuinka tehdä kaikista Facebookin valokuvista yksityisiä
'SELECT * FROM table WHERE column = '' + parameter + '';'

Jos hyökkääjä muutti URL-parametrin välitettäväksi 'tai' 1 '=' 1, kysely näyttää tältä:

'SELECT * FROM table WHERE column = '' OR '1'='1';'

Koska '1' on yhtä suuri kuin '1, hyökkääjä voi lisätä ylimääräisen kyselyn myös SQL-käskyn loppuun, joka myös suoritetaan.

Voit korjata tämän kyselyn parametrisoimalla sen nimenomaisesti. Esimerkiksi, jos käytät MySQLiä PHP: ssä, sen pitäisi tulla:

$stmt = $pdo->prepare('SELECT * FROM table WHERE column = :value'); $stmt->execute(array('value' => $parameter));

03. Suojaa XSS-hyökkäyksiltä

XSS-hyökkäykset ruiskuttavat sivuillesi haitallista JavaScriptiä, joka suoritetaan sitten käyttäjien selaimissa, ja voi muuttaa sivun sisältöä tai varastaa tietoja lähettääksesi hyökkääjälle. Esimerkiksi, jos näytät kommentteja sivulla ilman vahvistusta, hyökkääjä voi lähettää kommentteja, jotka sisältävät komentotunnisteita ja JavaScriptiä, jotka voivat toimia kaikkien muiden käyttäjien selaimissa ja varastaa heidän kirjautumisevästensä, jolloin hyökkäys voi hallita kaikkien käyttäjien tiliä käyttäjä, joka katsoi kommentin. Sinun on varmistettava, että käyttäjät eivät voi lisätä aktiivista JavaScript-sisältöä sivuillesi.

Tämä on erityisen huolestuttavaa nykyaikaisissa verkkosovelluksissa, joissa sivut on nyt rakennettu ensisijaisesti käyttäjien sisällöstä ja jotka usein tuottavat HTML-koodia, jonka sitten tulkitsevat myös käyttöliittymän kehykset, kuten Angular ja Ember. Nämä kehykset tarjoavat monia XSS-suojauksia, mutta palvelimen ja asiakkaan hahmonnuksen sekoittaminen luo myös uusia ja monimutkaisempia hyökkäysmahdollisuuksia: JavaScriptin lisääminen HTML: ään ei ole pelkästään tehokasta, vaan voit myös lisätä sisältöä, joka suorittaa koodia lisäämällä kulmaohjeita tai käyttämällä Emberiä auttajia.

Tärkeintä tässä on keskittyä siihen, miten käyttäjien luomasi sisältösi voisi välttää odotetut rajat ja että selain tulkitsisi sen jotain muuksi kuin aiot. Tämä on samanlainen kuin puolustaminen SQL-injektiota vastaan. Kun luot HTML-koodia dynaamisesti, käytä funktioita, jotka tekevät nimenomaisesti haluamasi muutokset (esim. Käytä element.setAttribute ja element.textContent, jotka selain välttää automaattisesti, sen sijaan, että asetat element.innerHTML käsin), tai käytä toimintoja mallityökalussa, joka tekee automaattisesti sopivan pakenemisen pikemminkin kuin ketjuttaa merkkijonoja tai asettaa raakaa HTML-sisältöä.

Toinen tehokas työkalu XSS-puolustajan työkalupakissa on Sisällön suojauskäytäntö (CSP). CSP on otsikko, jonka palvelimesi voi palauttaa ja joka kertoo selaimen rajoittamaan, miten ja mikä JavaScript suoritetaan sivulla, esimerkiksi estämään komentosarjojen suorittaminen, joita ei ole isännöity verkkotunnuksessasi, estämään inline JavaScript tai poistamaan eval () käytöstä. Mozillalla on erinomainen opas joidenkin esimerkkien määrityksillä. Tämän vuoksi hyökkääjän komentosarjojen on vaikeampi toimia, vaikka he saisivat ne sivullesi.

04. Varo virheilmoituksia

Ole varovainen, kuinka paljon tietoja annat virheilmoituksissasi. Anna käyttäjille vain vähän virheitä varmistaaksesi, että he eivät vuota palvelimellasi olevia salaisuuksia (esim. API-avaimet tai tietokannan salasanat). Älä myöskään anna täydellisiä poikkeustietoja, koska ne voivat helpottaa monimutkaisia ​​hyökkäyksiä, kuten SQL-injektio. Säilytä palvelinlokien yksityiskohtaiset virheet ja näytä käyttäjille vain tarvitsemansa tiedot.

05. Vahvista molemmilta puolilta

Vahvistus tulee aina tehdä sekä selain- että palvelinpuolella. Selain voi havaita yksinkertaisia ​​vikoja, kuten pakolliset kentät, jotka ovat tyhjiä ja kun kirjoitat tekstiä vain numerokenttään. Nämä voidaan kuitenkin ohittaa, ja sinun on varmistettava, että tarkistat nämä vahvistus- ja syvemmät vahvistuspalvelinpuolet, koska niiden laiminlyönti voi johtaa haitallisen koodin tai komentosarjakoodin lisäämiseen tietokantaan tai aiheuttaa ei-toivottuja tuloksia verkkosivustollasi.

06. Tarkista salasanasi

Kaikki tietävät, että heidän tulisi käyttää monimutkaisia ​​salasanoja, mutta se ei tarkoita, että he käyttävät aina. On erittäin tärkeää käyttää vahvoja salasanoja palvelimellesi ja verkkosivustosi järjestelmänvalvoja-alueelle, mutta yhtä tärkeää on myös vaatia hyviä salasanakäytäntöjä, jotta käyttäjät voivat suojata heidän tilinsä turvallisuutta.

Niin paljon kuin käyttäjät eivät ehkä pidä siitä, salasanavaatimusten noudattaminen, kuten vähintään noin kahdeksan merkkiä, mukaan lukien isot kirjaimet ja numerot, suojaavat heidän tietojaan pitkällä aikavälillä.

Salasanat tulisi aina tallentaa salattuina arvoina, mieluiten käyttämällä yksisuuntaista hajautusalgoritmia, kuten SHA. Tämän menetelmän käyttäminen tarkoittaa, että kun todennat käyttäjiä, vertaat vain salattuja arvoja. Verkkosivustojen turvallisuuden lisäämiseksi on hyvä suolata salasanat käyttämällä uutta suolaa salasanaa kohti.

Jos joku hakkeroi ja varastaa salasanasi, hash-salasanojen käyttö voi auttaa vahingoittamaan rajoituksia, koska niiden salauksen purkaminen ei ole mahdollista. Parasta, mitä joku voi tehdä, on sanahyökkäys tai raa'an voiman hyökkäys. Suolattuja salasanoja käytettäessä suuren määrän salasanoja voidaan murtaa vielä hitaammin, koska jokainen arvaus on hajautettava erikseen jokaiselle suola + salasanalle, mikä on laskennallisesti erittäin kallista.

Onneksi monet sisällönhallintajärjestelmät tarjoavat käyttäjien hallinnan heti, kun mukana on paljon näitä verkkosivuston suojausominaisuuksia, vaikka jotkin kokoonpanot tai ylimääräiset moduulit saattavat tarvita suolattujen salasanojen (ennen Drupal 7) käyttöä tai salasanan vähimmäisvahvuuden asettamiseksi. Jos käytät .NET-verkkoa, kannattaa käyttää jäsenpalveluntarjoajia, koska ne ovat hyvin määritettävissä, tarjoavat sisäänrakennetun verkkosivuston suojauksen ja sisältävät valmiin ohjauksen sisäänkirjautumista ja salasanan nollaamista varten.

07. Vältä tiedostojen lataamista

Käyttäjien salliminen ladata tiedostoja verkkosivustollesi voi olla suuri verkkosivuston tietoturvariski, vaikka se vain muuttaisi heidän avatariaan. Vaarana on, että kaikki ladatut tiedostot, vaikka ne näyttävätkin viattomilta, saattavat sisältää komentosarjan, joka palvelimellasi suoritettuna avaa verkkosivustosi kokonaan.

Jos sinulla on tiedostojen latauslomake, sinun on kohdeltava kaikkia tiedostoja erittäin epäilevästi. Jos annat käyttäjien ladata kuvia, et voi luottaa tiedostopääteeseen tai mime-tyyppiin varmistaaksesi, että tiedosto on kuva, koska ne voidaan helposti väärentää. Jopa tiedoston avaaminen ja otsikon lukeminen tai toimintojen käyttäminen kuvan koon tarkistamiseksi eivät ole hämmentäviä. Useimmat kuvamuodot sallivat kommenttiosan tallentamisen, joka voi sisältää palvelimen suorittaman PHP-koodin.

Joten mitä voit tehdä estääkseen tämän? Viime kädessä haluat estää käyttäjiä suorittamasta kaikkia lataamiaan tiedostoja. Oletusarvoisesti web-palvelimet eivät yritä suorittaa tiedostoja kuvalaajennuksilla, mutta älä luota pelkästään tiedostotunnisteen tarkistamiseen, koska tiedoston nimeltä image.jpg.php tiedetään olevan läpi.

Jotkut vaihtoehdot ovat nimetä tiedosto uudelleen lähetettäessä varmistaaksesi oikea tiedostopääte, tai muuttaa tiedoston käyttöoikeuksia, esimerkiksi chmod 0666, jotta sitä ei voida suorittaa. Jos käytät * nix -ohjelmaa, voit luoda .htaccess-tiedoston (katso alla), joka sallii pääsyn vain asetettuihin tiedostoihin, jotka estävät aiemmin mainitun kaksoislaajennushyökkäyksen.

deny from all order deny,allow allow from all

Viime kädessä suositeltava ratkaisu on estää ladattujen tiedostojen suora käyttö kokonaan. Tällä tavalla kaikki verkkosivustollesi ladatut tiedostot tallennetaan webrootin ulkopuoliseen kansioon tai tietokantaan möykkyinä. Jos tiedostoihisi ei ole suoraa pääsyä, sinun on luotava komentosarja tiedostojen hakemiseksi yksityisestä kansiosta (tai HTTP-käsittelijästä .NET: ssä) ja toimittamalla ne selaimeen. Kuvan tunnisteet tukevat src-määritettä, joka ei ole kuvan suora URL-osoite, joten src-määritteesi voi osoittaa tiedostojesi toimituskomentoon edellyttäen, että asetat oikean sisältötyypin HTTP-otsikossa. Esimerkiksi:

Suurin osa palveluntarjoajista käsittelee palvelimen kokoonpanoa puolestasi, mutta jos isännöit verkkosivustoasi omalla palvelimellasi, sinun on tarkistettava muutama asia.

Varmista, että olet määrittänyt palomuurin, ja estät kaikki välttämättömät portit. Jos mahdollista, aseta DMZ (Demilitarized Zone), joka sallii pääsyn portteihin 80 ja 443 ulkomaailmasta. Vaikka tämä ei ehkä olekaan mahdollista, jos sinulla ei ole pääsyä palvelimelle sisäisestä verkosta, sinun on avattava portit tiedostojen lataamisen sallimiseksi ja kirjautumiseksi palvelimelle etäyhteyden kautta SSH: n tai RDP: n kautta.

Jos sallit tiedostojen lataamisen Internetistä, käytä vain suojattuja siirtotapoja palvelimellesi, kuten SFTP tai SSH.

Jos mahdollista, pyydä tietokantaa toimimaan eri palvelimella kuin verkkopalvelimesi. Tämä tarkoittaa, että tietokantapalvelinta ei voida käyttää suoraan ulkomaailmasta, vain verkkopalvelimesi voi käyttää sitä, mikä minimoi tietojen altistumisriskin.

Lopuksi, älä unohda palvelimen fyysisen pääsyn rajoittamista.

08. Käytä HTTPS: ää

HTTPS on protokolla, jota käytetään suojaamaan Internetiä. HTTPS takaa, että käyttäjät puhuvat odottamalleen palvelimelle ja että kukaan muu ei voi siepata tai muuttaa sisältöä, jonka he näkevät kuljetuksen aikana.

Jos sinulla on jotain, mitä käyttäjät saattavat haluta yksityiseksi, on erittäin suositeltavaa käyttää sen toimittamiseen vain HTTPS: ää. Se tarkoittaa tietysti luottokortti- ja kirjautumissivuja (ja URL-osoitteita, joihin he lähettävät), mutta tyypillisesti myös paljon enemmän sivustostasi. Kirjautumislomakkeessa asetetaan usein esimerkiksi eväste, joka lähetetään kaikkien muiden sisäänkirjautuneiden käyttäjien pyyntöjen kanssa sivustollesi ja joita käytetään näiden pyyntöjen todentamiseen. Tämän varastava hyökkääjä voi täysin jäljitellä käyttäjää ja ottaa haltuunsa kirjautumisistunnon. Tällaisten hyökkäysten voittamiseksi haluat melkein aina käyttää HTTPS: ää koko sivustollasi.

Se ei ole enää niin hankalaa tai kallista kuin se oli kerran. Salataan tarjoaa täysin ilmaisia ​​ja automatisoituja varmenteita, joita tarvitset HTTPS: n ottamiseksi käyttöön, ja olemassa oleville yhteisötyökaluille on tarjolla laaja valikoima yleisiä alustoja ja kehyksiä, jotta tämä voidaan määrittää automaattisesti sinulle.

Erityisesti Google on ilmoittanut, että ne lisäävät sinua hakusijoituksissa, jos käytät HTTPS: ää, antaen tälle myös SEO-edun. Turvallinen HTTP on tulossa ulos, ja nyt on aika päivittää.

Käytätkö jo HTTPS: ää kaikkialla? Mene pidemmälle ja tutustu HTTP Strict Transport Security (HSTS) -asetuksen määrittämiseen, joka on helppo otsikko, jonka voit lisätä palvelimesi vastauksiin estääksesi suojaamattoman HTTP: n koko verkkotunnuksessasi.

09. Hanki verkkosivustojen suojaustyökalut

Kun luulet tehnyt kaiken voitavan, on aika testata verkkosivustosi suojaus. Tehokkain tapa tehdä tämä on käyttää joitain verkkosivustojen suojaustyökaluja, joita usein kutsutaan tunkeutumistesteiksi tai kynätesteiksi lyhyeksi ajaksi.

Tässä on monia kaupallisia ja ilmaisia ​​tuotteita. He työskentelevät samalla tavoin kuin hakkereiden komentosarjat, koska he testaavat kaikki tunnetut hyödyntämiset ja yrittävät vaarantaa sivustosi joillakin edellä mainituilla menetelmillä, kuten SQL Injection.

miten tehdä YouTube-logo Photoshopilla

Joitakin ilmaisia ​​työkaluja, jotka kannattaa tarkastella:

  • Netsparker (Ilmainen yhteisöversio ja kokeiluversio saatavilla). Hyvä testaamaan SQL-injektiota ja XSS: ää
  • OpenVAS Väittää olevansa edistynein avoimen lähdekoodin suojauskanneri. Hyvä testaamaan tunnettuja haavoittuvuuksia, skannaa tällä hetkellä yli 25 000. Asentaminen voi kuitenkin olla vaikeaa ja edellyttää, että asennetaan OpenVAS-palvelin, joka toimii vain * nixillä. OpenVAS on Nessuksen haarukka, ennen kuin siitä tuli suljetun lähdekoodin kaupallinen tuote.
  • SecurityHeaders.io (ilmainen online-tarkistus). Työkalu, joka ilmoittaa nopeasti, mitkä yllä mainitut suojausotsikot (kuten CSP ja HSTS) verkkotunnuksessa on otettu käyttöön ja määritetty oikein.
  • Xenotix XSS Exploit Framework OWASP: n (Open Web Application Security Project) työkalu, joka sisältää valtavan valikoiman XSS-hyökkäysesimerkkejä, joiden avulla voit vahvistaa nopeasti, ovatko sivustosi syötteet haavoittuvia Chromessa, Firefoxissa ja IE: ssä.

Automaattisten testien tulokset voivat olla pelottavia, koska ne aiheuttavat paljon mahdollisia ongelmia. Tärkeää on keskittyä ensin kriittisiin kysymyksiin. Jokaisen ilmoitetun ongelman mukana tulee normaalisti hyvä selitys mahdollisesta haavoittuvuudesta. Luultavasti huomaat, että jotkut keskitason / matalan ongelmat eivät ole huolenaihe sivustollesi.

Voit yrittää vaarantaa sivustosi käsin muuttamalla POST / GET-arvoja muutamalla tavalla. Virheenkorjausproksi voi auttaa sinua täällä, koska sen avulla voit siepata HTTP-pyynnön arvot selaimesi ja palvelimen välillä. Suosittu ilmainen sovellus nimeltä Pelimanni on hyvä lähtökohta.

Joten mitä sinun pitäisi yrittää muuttaa pyynnöstä? Jos sinulla on sivuja, joiden pitäisi näkyä vain kirjautuneelle käyttäjälle, yritä muuttaa URL-parametreja, kuten käyttäjätunnus tai evästearvot, yrittäessäsi tarkastella toisen käyttäjän tietoja. Toinen testaamisen arvoinen alue ovat lomakkeet, POST-arvojen muuttaminen yrittämällä lähettää koodi XSS: n suorittamiseksi tai palvelinpuolen komentosarjan lataaminen.

Aiheeseen liittyvät artikkelit: