9 saugos patarimai, kaip apsaugoti jūsų svetainę nuo įsilaužėlių

Galbūt nemanote, kad jūsų svetainėje yra kažkas, dėl ko verta nulaužti, tačiau svetainėms nuolat kyla pavojus. Dauguma svetainių saugumo pažeidimų nėra skirti pavogti jūsų duomenis ar susipainioti su jais svetainės išdėstymas , bet bando naudoti jūsų serverį kaip el. pašto šlamšto siuntimo priemonę arba sukurti laikiną žiniatinklio serverį, paprastai teikiantį neteisėto pobūdžio failus. Kiti labai paplitę būdai, kaip piktnaudžiauti pažeistomis mašinomis, yra jūsų serverių naudojimas kaip roboto tinklo dalis arba „Bitcoins“ naudojimas. Jūs netgi galite nukentėti nuo išpirkos.

Įsilaužimą reguliariai vykdo automatizuoti scenarijai, parašyti norint naršyti internete, bandant išnaudoti žinomas svetainės saugumo problemas programinėje įrangoje. Čia yra devyni populiariausi patarimai, padėsiantys apsaugoti jus ir jūsų svetainę internete.

01. Atnaujinkite programinę įrangą

Tai gali atrodyti akivaizdu, tačiau norint užtikrinti jūsų svetainės saugumą, būtina užtikrinti, kad visa programinė įranga būtų atnaujinta. Tai taikoma tiek serverio operacinei sistemai, tiek bet kokiai programinei įrangai, kurią galbūt naudojate savo svetainėje, pavyzdžiui, TVS ar forume. Kai programinėje įrangoje randama interneto saugumo spragų, įsilaužėliai greitai bando jomis piktnaudžiauti.



Jei naudojate valdomą prieglobos sprendimą, nereikia tiek jaudintis dėl operacinės sistemos saugos naujinimų taikymo, kiek prieglobos įmonė turėtų tuo pasirūpinti.

Jei savo svetainėje naudojate trečiosios šalies programinę įrangą, pvz., TVS ar forumą, turėtumėte užtikrinti, kad greitai pritaikysite visus saugos pleistrus. Daugelis pardavėjų turi adresų sąrašą arba RSS sklaidos kanalą, kuriame išsamiai aprašomos visos svetainės saugos problemos. „WordPress“ , „Umbraco“ ir daugelis kitų TVS praneša apie galimus sistemos atnaujinimus, kai prisijungiate.

Daugelis kūrėjų naudoja tokias priemones kaip „Composer“, „npm“ ar „RubyGems“, kad valdytų savo programinės įrangos priklausomybes, o saugos pažeidžiamumas, atsirandantis pakete, nuo kurio priklausote, bet į kurį nekreipiate dėmesio, yra vienas iš paprasčiausių būdų, kaip išsisukti. Įsitikinkite, kad nuolat atnaujinate savo priklausomybę, ir naudokite tokius įrankius kaip Gimnazija gauti automatinius pranešimus, kai paskelbiama apie vieno iš komponentų pažeidžiamumą.

02. Saugokitės SQL injekcijos

SQL injekcijos atakos yra tada, kai užpuolikas naudojasi žiniatinklio formos lauku ar URL parametru, kad gautų prieigą prie jūsų duomenų bazės ar ja manipuliuotų. Kai naudojate standartinę „Transact SQL“, nesąmoningai į savo užklausą galite nesąmoningai įterpti nesąžiningą kodą, kurį būtų galima naudoti lentelėms keisti, gauti informaciją ir ištrinti duomenis. To galite lengvai išvengti visada naudodamiesi parametrizuotomis užklausomis, dauguma žiniatinklio kalbų turi šią funkciją ir ją lengva įgyvendinti.

Apsvarstykite šią užklausą:

samsung galaxy s7 tiesioginis pokalbis walmart
'SELECT * FROM table WHERE column = '' + parameter + '';'

Jei užpuolikas pakeitė URL parametrą į „1“ = „1“, užklausa atrodys taip:

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

Kadangi „1“ yra lygus „1“, tai leis užpuolikui pridėti papildomą užklausą prie SQL sakinio pabaigos, kuri taip pat bus vykdoma.

Galite pataisyti šią užklausą aiškiai ją parametruodami. Pvz., Jei naudojate „MySQLi“ PHP, tai turėtų tapti:

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

03. Apsaugokite nuo XSS atakų

Kelių svetainių scenarijaus (XSS) atakos į jūsų puslapius įterpia kenkėjišką „JavaScript“, kuri tada paleidžiama jūsų vartotojų naršyklėse, ir gali pakeisti puslapio turinį arba pavogti informaciją, kad išsiųstų užpuolikui. Pvz., Jei puslapyje rodote komentarus nepatvirtinę, tada užpuolikas gali pateikti komentarus su scenarijų žymomis ir „JavaScript“, kurie gali būti paleisti kiekvieno kito vartotojo naršyklėje ir pavogti jų prisijungimo slapuką, leidžiantį atakai perimti kiekvieno vartotojo paskyrą. vartotojas, kuris peržiūrėjo komentarą. Turite įsitikinti, kad vartotojai negali įterpti aktyvaus „JavaScript“ turinio į jūsų puslapius.

Tai ypač kelia susirūpinimą šiuolaikinėse žiniatinklio programose, kur puslapiai dabar kuriami pirmiausia iš vartotojo turinio ir kurie daugeliu atvejų sukuria HTML, kurį tada taip pat interpretuoja „front-end“ sistemos, tokios kaip „Angular“ ir „Ember“. Šios sistemos teikia daug XSS apsaugos, tačiau serverio ir kliento atvaizdavimo maišymas taip pat sukuria naujas ir sudėtingesnes atakos galimybes: ne tik efektyviai įvedama „JavaScript“ į HTML, bet ir įterpiant „Angular“ direktyvas arba naudojant „Ember“, galima švirkšti turinį, kuris vykdys kodą. pagalbininkai.

Svarbiausia čia sutelkti dėmesį į tai, kaip jūsų vartotojo sukurtas turinys galėtų peržengti laukiamas ribas, o naršyklė jį interpretuotų kaip kažką kito, nei jūs ketinote. Tai panašu į gynybą nuo SQL injekcijos. Dinamiškai generuodami HTML naudokite funkcijas, kurios aiškiai atlieka jūsų ieškomus pakeitimus (pvz., Naudokite elementą element.setAttribute ir element.textContent, kuriuos naršyklė automatiškai išvengs, o ne nustatykite elementą elementas.innerHTML ranka) arba naudokite funkcijas šablonų įrankyje, kuris automatiškai atlieka tinkamą pabėgimą, o ne sujungia eilutes ar nustato neapdorotą HTML turinį.

Kitas galingas įrankis, esantis „XSS Defender“ įrankių rinkinyje, yra „Content Security Policy“ (CSP). CSP yra antraštė, kurią gali grąžinti jūsų serveris, nurodantis naršyklei apriboti, kaip ir kokia „JavaScript“ vykdoma puslapyje, pavyzdžiui, neleisti paleisti jokių scenarijų, kurie nėra priglobti jūsų domene, neleisti įterpti „JavaScript“ arba išjungti „eval“ (). „Mozilla“ turi puikus vadovas su tam tikrais konfigūracijų pavyzdžiais. Dėl to užpuoliko scenarijai sunkiau veikia, net jei jie gali juos patekti į jūsų puslapį.

04. Saugokitės klaidų pranešimų

Būkite atsargūs, kiek informacijos atiduodate savo klaidos pranešimuose. Pateikite tik minimalias klaidas savo vartotojams, kad įsitikintumėte, jog jie nepraleidžia jūsų serveryje esančių paslapčių (pvz., API raktų ar duomenų bazės slaptažodžių). Taip pat nepateikite visos išimties informacijos, nes tai gali žymiai palengvinti sudėtingas atakas, tokias kaip SQL injekcija. Saugokite išsamias klaidas savo serverio žurnaluose ir rodykite vartotojams tik jiems reikalingą informaciją.

05. Patvirtinkite iš abiejų pusių

Patvirtinimas visada turėtų būti atliekamas tiek naršyklės, tiek serverio pusėje. Naršyklė gali užfiksuoti paprastus gedimus, pvz., Privalomus laukus, kurie yra tušti ir įvesdami tekstą į tik skaičių lauką. Tačiau jų galima apeiti ir turėtumėte įsitikinti, kad patikrinote, ar nėra patvirtinimo ir gilesnio patvirtinimo serverio pusės, nes to nepadarius, į duomenų bazę gali būti įterptas kenkėjiškas kodas ar scenarijų kodas arba jūsų svetainėje gali atsirasti nepageidaujamų rezultatų.

06. Patikrinkite savo slaptažodžius

Visi žino, kad turėtų naudoti sudėtingus slaptažodžius, tačiau tai nereiškia, kad jie naudojasi visada. Labai svarbu naudoti griežtus slaptažodžius savo serveryje ir svetainės administratoriaus srityje, tačiau taip pat svarbu reikalauti geros slaptažodžių praktikos, kad vartotojai apsaugotų savo paskyrų saugumą.

Kad ir kaip vartotojams gali nepatikti, bet slaptažodžio reikalavimų, pvz., Mažiausiai maždaug aštuonių simbolių, įskaitant didžiąją raidę ir skaičių, vykdymas padės ilgainiui apsaugoti jų informaciją.

Slaptažodžiai visada turėtų būti saugomi kaip užšifruotos vertės, pageidautina naudojant vienpusį maišos algoritmą, pvz., SHA. Naudojant šį metodą, kai autentifikuojate vartotojus, jūs visada lyginate tik užšifruotas vertes. Norint užtikrinti papildomą svetainės saugumą, patariama pasūdyti slaptažodžius naudojant naują druskos slaptažodį.

Jei kas nors įsilaužia ir pavagia jūsų slaptažodžius, maišų naudojimas gali padėti pakenkti apribojimams, nes jų iššifruoti neįmanoma. Geriausia, ką kažkas gali padaryti, tai žodžio ataka ar žiaurios jėgos puolimas, iš esmės atspėdamas kiekvieną derinį, kol jis randa atitikmenį. Naudojant sūdytus slaptažodžius, daugelio slaptažodžių nulaužimas yra dar lėtesnis, nes kiekvienas spėjimas turi būti maišomas atskirai kiekvienam druskos + slaptažodžiui, kuris skaičiavimais yra labai brangus.

Laimei, daugelis TVS suteikia galimybę vartotojams valdyti iš karto su daugybe šių svetainės saugos funkcijų, nors tam tikrų konfigūracijų ar papildomų modulių gali prireikti norint naudoti sūdytus slaptažodžius (prieš „Drupal 7“) arba nustatyti minimalų slaptažodžio stiprumą. Jei naudojate .NET, verta naudoti narystės teikėjus, nes jie yra labai konfigūruojami, užtikrinkite integruotą svetainės saugumą ir įtraukite parengtus valdiklius prisijungimui ir slaptažodžiui iš naujo nustatyti.

07. Venkite failų įkėlimo

Leidimas vartotojams įkelti failus į jūsų svetainę gali kelti didelę grėsmę svetainės saugumui, net jei tai tiesiog pakeis jų avatarą. Rizika yra ta, kad bet kuriame įkeltame faile, kad ir koks nekaltas jis atrodytų, gali būti scenarijus, kuris, vykdomas jūsų serveryje, visiškai atveria jūsų svetainę.

Jei turite failo įkėlimo formą, su visais failais turite elgtis labai įtariai. Jei leidžiate vartotojams įkelti vaizdus, ​​negalite pasikliauti failo plėtiniu ar „mime“ tipu, kad patikrintumėte, ar failas yra vaizdas, nes juos galima lengvai suklastoti. Net atidaryti failą ir perskaityti antraštę ar naudoti funkcijas tikrinant vaizdo dydį nėra apgaulingas. Daugelis vaizdų formatų leidžia saugoti komentarų skiltį, kurioje gali būti PHP kodas, kurį gali atlikti serveris.

Taigi, ką galite padaryti, kad to išvengtumėte? Galų gale norite, kad vartotojai negalėtų vykdyti bet kurio įkeliamo failo. Pagal numatytuosius nustatymus žiniatinklio serveriai nebandys vykdyti failų su vaizdo plėtiniais, tačiau nepasitikėkite tik tuo, kad patikrinsite failo plėtinį, nes buvo žinoma, kad failas, kurio vardas yra image.jpg.php.

Kai kurios parinktys yra pervadinti failą įkeliant, kad būtų užtikrintas teisingas failo plėtinys, arba pakeisti failo teises, pavyzdžiui, „chmod 0666“, kad jo nebūtų galima vykdyti. Jei naudojate * nix, galite sukurti .htaccess failą (žr. Toliau), kuris leis pasiekti tik nustatytus failus, užkertančius kelią anksčiau minėtam dvigubam plėtinio išpuoliui.

deny from all order deny,allow allow from all

Galiausiai rekomenduojamas sprendimas yra užkirsti kelią tiesioginei prieigai prie įkeltų failų. Tokiu būdu visi į jūsų svetainę įkelti failai saugomi aplanke, esančiame už žiniatinklio šaknies, arba duomenų bazėje kaip blob. Jei jūsų failai nėra tiesiogiai prieinami, turėsite sukurti scenarijų, kad gautumėte failus iš privataus aplanko (arba HTTP tvarkytuvo .NET) ir pristatytumėte juos į naršyklę. Paveikslėlių žymos palaiko src atributą, kuris nėra tiesioginis paveikslėlio URL, todėl jūsų src atributas gali nukreipti į failo pateikimo scenarijų, jei HTTP antraštėje nustatote teisingą turinio tipą. Pavyzdžiui:

Daugelis prieglobos paslaugų teikėjų sprendžia serverio konfigūraciją jums, tačiau jei savo svetainę talpinate savo serveryje, norėsite patikrinti keletą dalykų.

Įsitikinkite, ar turite užkardos sąranką, ir blokuojate visus neesminius prievadus. Jei įmanoma, nustatykite DMZ (demilitarizuotą zoną), iš išorinio pasaulio leidžiančią patekti tik į 80 ir 443 prievadus. Nors tai gali būti neįmanoma, jei neturite prieigos prie savo serverio iš vidinio tinklo, nes jums reikės atidaryti prievadus, kad būtų galima įkelti failus ir nuotoliniu būdu prisijungti prie savo serverio per SSH ar RDP.

Jei leidžiate įkelti failus iš interneto, naudokite tik saugius perdavimo būdus į savo serverį, pvz., SFTP ar SSH.

Jei įmanoma, duomenų bazė turi veikti kitame serveryje, nei jūsų žiniatinklio serveris. Tai reiškia, kad prie duomenų bazės serverio negalima tiesiogiai prisijungti iš išorinio pasaulio, tik jūsų žiniatinklio serveris gali jį pasiekti, sumažindamas jūsų duomenų pavojaus riziką.

Galiausiai nepamirškite apriboti fizinės prieigos prie savo serverio.

08. Naudokite HTTPS

HTTPS yra protokolas, naudojamas saugumui užtikrinti internete. HTTPS garantuoja, kad vartotojai kalba su serveriu, kurio tikisi, ir kad niekas kitas negali sulaikyti ar pakeisti turinio, kurį mato perduodant.

Jei turite ką nors, ko jūsų vartotojai gali norėti privataus, labai patartina jį naudoti tik HTTPS. Tai, žinoma, reiškia kredito kortelių ir prisijungimo puslapius (ir URL, kuriems jie pateikia), bet paprastai ir daug daugiau jūsų svetainės. Prisijungimo formoje dažnai bus nustatytas slapukas, kuris siunčiamas kartu su kiekviena kita jūsų svetainės užklausa, kurią pateikia prisijungęs vartotojas, ir naudojama toms užklausoms patvirtinti. Tai pavogęs užpuolikas galėtų puikiai imituoti vartotoją ir perimti jo prisijungimo sesiją. Norėdami įveikti tokio tipo išpuolius, beveik visada norite naudoti HTTPS visoje svetainėje.

Tai nebėra taip keblu ar brangu, kaip kadaise. Užšifruokime teikia visiškai nemokamus ir automatinius sertifikatus, kurių jums reikės norint įgalinti HTTPS, ir yra esamų bendruomenės įrankių, skirtų įvairioms bendrosioms platformoms ir sistemoms, kad tai automatiškai nustatytų jums.

kaip įdėti kitą vaizdą į

Visų pirma „Google“ paskelbė, kad jie padidins jūsų paieškos reitingą, jei naudosite HTTPS, suteikdami tai ir SEO naudą. Nesaugus HTTP yra išeitis, ir dabar laikas atnaujinti.

Jau visur naudojate HTTPS? Eikite toliau ir peržiūrėkite „HTTP Strict Transport Security“ (HSTS) nustatymą. Tai paprasta antraštė, kurią galite pridėti prie savo serverio atsakymų, kad neleistumėte nesaugaus HTTP visam domenui.

09. Gaukite svetainės saugos įrankius

Kai manote, kad padarėte viską, ką galite, atėjo laikas išbandyti savo svetainės saugumą. Veiksmingiausias būdas tai padaryti yra naudojant kai kurias svetainės saugos priemones, kurios dažnai vadinamos skvarbos testais arba trumpu rašikliu.

Yra daugybė komercinių ir nemokamų produktų, kurie jums padės. Jie veikia panašiai kaip įsilaužėlių scenarijai, nes jie išbando visus žinomus išnaudojimus ir bando pažeisti jūsų svetainę naudodami kai kuriuos anksčiau minėtus metodus, pvz., „SQL Injection“.

Keli nemokami įrankiai, į kuriuos verta atkreipti dėmesį:

  • „Netsparker“ (Galimas nemokamas bendruomenės leidimas ir bandomoji versija). Gerai išbandyti SQL injekciją ir XSS
  • „OpenVAS“ Tvirtina, kad yra pažangiausias atvirojo kodo saugos skaitytuvas. Gerai išbandyti žinomus pažeidžiamumus, šiuo metu nuskaito daugiau nei 25 000. Bet tai gali būti sunku nustatyti, todėl reikia įdiegti „OpenVAS“ serverį, kuris veikia tik * nix. „OpenVAS“ yra „Nessus“ šakutė, kol ji tapo uždaro kodo komerciniu produktu.
  • „SecurityHeaders.io“ (nemokamas internetinis čekis). Įrankis, leidžiantis greitai pranešti, kurios aukščiau paminėtos saugos antraštės (pvz., CSP ir HSTS) domenas įgalino ir tinkamai sukonfigūravo.
  • „Xenotix XSS Exploit Framework“ „OWASP“ („Open Web Application Security Project“) įrankis, apimantis didžiulį XSS atakų pavyzdžių pasirinkimą, kurį galite paleisti, kad greitai patvirtintumėte, ar jūsų svetainės įvadai yra pažeidžiami „Chrome“, „Firefox“ ir IE.

Automatizuotų bandymų rezultatai gali būti bauginantys, nes jie pateikia daugybę galimų problemų. Svarbiausia pirmiausia sutelkti dėmesį į kritinius klausimus. Kiekviena problema, apie kurią pranešama, yra tinkamai paaiškinta apie galimą pažeidžiamumą. Tikriausiai pastebėsite, kad kai kurie vidutinio ir žemo lygio klausimai nerūpi jūsų svetainei.

Yra keli tolesni veiksmai, kuriuos galite atlikti rankiniu būdu bandydami pažeisti savo svetainę, keisdami POST / GET reikšmes. Derinimo tarpinis serveris gali jums padėti čia, nes jis leidžia perimti HTTP užklausos vertes tarp naršyklės ir serverio. Vadinama populiari nemokamos programos programa Maldininkas yra geras atspirties taškas.

Taigi ką turėtumėte bandyti pakeisti pagal prašymą? Jei turite puslapių, kurie turėtų būti matomi tik prisijungusiam vartotojui, pabandykite pakeisti URL parametrus, pvz., Vartotojo ID arba slapukų vertes, bandydami peržiūrėti kito vartotojo informaciją. Kita sritis, kurią verta išbandyti, yra formos, POST reikšmių keitimas bandant pateikti kodą XSS atlikti arba serverio pusės scenarijaus įkėlimas.

Susiję straipsniai: