Kirjoittaja Aihe: Nettiselaimen kautta sivulle syötettävän tekstin turvallisuus php-sivulla  (Luettu 2467 kertaa)

teele

  • Käyttäjä
  • Viestejä: 818
    • Profiili

Tämä asia on tainnut olla esillä jo aikaisemmenkin, mutta yritän nyt tehdä täsmällisen kysymyksen.

Jos käyttäjä voi syöttää tekstikentän avulla tekstiä, joka menne php-sivulle, olisiko riittävä turvallisuusvarmistus esimerkiksi se, että syötetystä tekstistä poistaa kaikki <tag -muotoiset palat eli kaikki tagit, jolloin myös php- ja javascript-tagit poistuvat. Ajatuksena olisi siis, että ei tageja --> ei suoritettavaa koodia.

AimoE

  • Käyttäjä
  • Viestejä: 2722
    • Profiili
Peukalosääntö on se, että helpointa on tarkistaa, että syöte sisältää vain sallittuja merkkejä. Kiellettyjen merkkien poisto tai tarkistus on aina hankalampaa koska merkkijoukko on isompi, mahdollisuuksia enemmän. Yleensä.

Perl-ohjelmoijille neuvoja löytyy netistä hakusanalla "untaint".

Jere Sumell

  • Käyttäjä
  • Viestejä: 723
  • Talous, Hallinto ja Markkinointi (AMK, 2017),B.B.A
    • Profiili
    • Tietokone-blogi
AimoE antoi hyvän peruskivijalka-niksin, mitä tosiaan valkoinen lista ensisijaisesti toimii paremmin juurikin tuon takia, että on mahdotonta määritellä etukäteen kaikkia rajaten ulos ei-sallittuja ulkopuolelta ei-itsestä riippuvia uhkia (threads) esimerkiksi sen takia, että ei ole poissuljettua, ja niin onkin, että aina aika ajoin tulee myos uusia, mistä ole välttämättä aiemmin mitään tietoa ollutkaan mahdollisesti. Kun määrittelee valkoisen listan, mitkä syotteet on sallittuja, siinä on jo valmiiksi kaikki tulevatkin ei-toivotut syotteet ulosrajattu. Näin peusteiltaan.

Toinen ja, jos php-ohjelmassa on määritelty, että käyttäjän syote tallennettaan johonkin, niin voi unohtaa palveilmelle tekstitiedostoon, tai ylipäätään datan tallentamisen tiedostoon palvelimelle. Jos datan aikoo saattaa muulle maailmalle luettavaksi jossain kohtaa, sitten tiedostossa pitää olla määriteltynä CHMODilla sekä kirjoitus, että lukuoikeus, ja sitten kuka tahasa voi miten hyvänsä manipuloida tiedostoa mistä päin maailmaa tahansa pääsääntoisesti.

Tiedon validointiin liityen on ja olemassa jotain perussääntojä, ja vaativampaakin ohjekirjastoa olemassa, mutta noiden säännolisten lausekkeiden määrittely voi olla aika tuskaista, vaikka niitä on ihan päteviä ohjelmistojakin muutama saatavilla, joilla niitä saa aika vaivattomasti määriteltyä ilman, että verenpaineen nousun ja stressin päänsäryn seurauksesta sitten tulee unettomia lyhytkestoisia jaksoja elämässä, jotka viosi käyttää nukkumiseen syväunessa, mitä ihminen tarvitsee ravinnon ja sosiaalisen toimintaympäriston lisäksi enää kolmantena lepoa ravinnon jälkeen.

Taitaa olla vieläkin, mutta oli jo 2014/2015 varmaan käytetyin noista php-kehityskehyksistä Laravel, mitä eräs opiskelukaverini, joka oli jo pitkään php:llä taitava kokenut ohjelmoija, jolla oli ja käytännon tyokokemusta php:stä, niin käytti pelkästään sitä ja puhui jo silloin sitä, että suosii sitä, mitä pitää jokseenkin turvallisusnäkokulmia tottakai tärkeänä, kun verkkoympäristoon sovelluksi ohjelmoidaan.

Lomakkeiden suhteen, jos nyt ajatellaan tetä se UI on esim. verkkoselain-pohjainen ratkaiu, niin lomakkeet pitää siinä kohtaa, kun lähettää ne, prosessoida, itsekin olen harkinnut pelkästään php-validointi tetotyypin tai ohjelmistokomponentin ohjelmointia tässä kesän alussa kävi mielessä.

Sitten lomakkeen kenttiin ja pystyy määritteleemään sitä UI:n koodia kirjoittaessa lisäattribuuteilla rajoittaa ja sitä datan tyyppiä, pituutta yms. asioita, joilla ja rajaa ulos epätoivottuja syotteitä. Siinä ja omat hyodyt turvallisuusnäkokulmasta tulee maksimoitua, kun minimoi mahdollisuudet sovelluksen käyttäjälle, eli asiakkaalle tämän syottää mitään "omaa sävellettyä", joskaan aina nyt ei ole mahdollista rajata ihan kaikkea pois.

On jo pitkään ollut kotimaisisakin verkkopalveluissa, mitä lomakkeita joka paikasa, ne on ja tällä menetelmällä aika tarkalleen laadittuna, mitä olen selvitellyt asiaa omaksi ajankuluksi.
Free Internet and  people for humans all over the globe!

(Profiilikuvassa oma valokuvani GIMPissä editoituna Disney Classic-väripaletin väreihin ja muunnettuna bittikartta-tiedostosta vektorigrafiikaksi.)