Minulle tuli kaverini kanssa kiistaa seuraavalaisesta asiasta:
Onko riski tietoturvalle, jos käyttäjä pääsee kirjoittamaan lomakkeeseen omaa PHP / html koodia. Lomake on sellainen, ettei html koodin osaltaan siinä ole mitään, koska sen tulostus näkyy vain käyttäjälle itselleen, mutta voiko PHP koodista saada aikaan jotain haittaa palvelimelle?
Onko suurikin tarve aina ajaa lomakkeilta tullut data funktion kautta, joka muuttaa varsinkin < ja > merkit html muotoon?
Onko riski tietoturvalle, jos käyttäjä pääsee kirjoittamaan lomakkeeseen omaa PHP / html koodia. Lomake on sellainen, ettei html koodin osaltaan siinä ole mitään, koska sen tulostus näkyy vain käyttäjälle itselleen, mutta voiko PHP koodista saada aikaan jotain haittaa palvelimelle?
Onko suurikin tarve aina ajaa lomakkeilta tullut data funktion kautta, joka muuttaa varsinkin < ja > merkit html muotoon?
Vastaukset 5
Vanhimmat
onko tietoturvariski, jos ulkopuolinen käyttäjä voi suorittaa php-koodia palvelimella?
Niin tuossahan ei mitään koodia suoriteta vaan tulostetaan selaimelle. Tuo mahdollistaa ainoostaan JS jne... kikkailun.
Jolloin http://sivusi.com?teksti=JS_koodi_joka_aukasee_miljoona 1_popuppia
Tuon kautta ei siis voi tehdä mitään palvelimelle. Tietenkin jos koodin laitat eval-function läpi niin silloin tuon kautta pystyy tekee mitä tahansa sinun oikeuksilla.
Mutta muista, että tuon kautta voidaan tehdä linkkejä joilla sivuillasi näyttäisi olevan vaikkapa pornoa.
Yleensä tulostus kannattaa laittaa http://fi.php.net/manual/fi/function.htmlspecialchars.php function kautta, riippuu tietenkin mitä olet tekemässä.
Mutta entäpä jos samalla sivulla onkin mysqliin liittyvää koodia? saattaapi sitä joku taitavampi päästä tyhjentelemään tietokantaa..
"Mutta entäpä jos samalla sivulla onkin mysqliin liittyvää koodia?"
Ei nuo merkit ole yhtään vaarallisia tietokannan suhteen, tietokantaan data laitetaan aina muokkaamatta vain tietokantavaaralliset merkit escapetettu. Esim http://fi.php.net/manual/fi/function.mysql-real-escape-string.php mutta mielummin käytetään PDO tai MySQLi-functioita jolloin käytetään parametreja ja PHP hoitaa tuommoset asiat, PDO:n etu on siinä että se on kantariippumaton, mutta MySQLi:n etu on taasen parempa suorituskyky.
että jos otat vastaan lomakkeella PHP koodia ja se ajetaan suoraan palvelimella tai lisätään ajettavaksi .php-sivun osaksi, niin silloin käyttäjä voi ajaa sivun omistajan oikeuksilla mitä nyt ikinä PHP:llä voi saada aikaan.