PHP:tä hönttämölön sekaan

Palautan vanhoja PHP-oppeja mieleen, kun tässä ei ole tullut pelehdittyä PHPn kanssa kahteen vuoteen.

Aikoinaan tuli lätkittyä php-koodia html:n sekaan ihan surutta. Mutta onko se turvallisuuden ja ylläpidettävyyden kannalta järkevää? Tuskin, paitsi etten osaa perustella :P

Hahmottelin vähän toimintaa siten, että tein php-funktioille oman include-tiedoston, jota kutsutaan tarvittaessa heti sivun alussa. Mutta sitten ajatus nyrjähti, kun hokasin että mites saat vaikka tietokantahaun tulostumaan haluttuun html-tableen. Table olisi täten määriteltävä tkhaku-funktiossa. Noh, mites saat sen tablen sitten asettumaan haluttuun positioon itse html-sivulle xD

Pitänee kokeilla sitten niin, että php-funkkarit on include-tiedostossa, mutta html-koodissa on kuitenkin noita funktioiden kutsuja niissä kohdissa, mihin esim. halutaan kannan sisältöä kutsua. Sekametelisoppahan siitä syntyy, vai syntyykö?
101171
Äänestä

Muut lukivat myös

Vastaukset 10

Vanhimmat
  • Mites tuo nyt liittyy asiaan?

    Äänestä

Tutustuhan http://en.wikipedia.org/wiki/Model-view-controller tuo on suosittu ja helppokäyttöinen kunhan sisäistää idean.

PHP:n tekijöillä on oma framework http://framework.zend.com/ jota kannattanee käyttää.Tämä toki edellyttää, että ymmärrät jotain olioista.


"kun hokasin että mites saat vaikka tietokantahaun tulostumaan haluttuun html-tableen. Table olisi täten määriteltävä tkhaku-funktiossa"

tkhaku-functio kuuluu modeliin, joten se palauttaa pelkän datan taulukkona. Jonka ohjain siirtää viewille, jossa sitten foreach-functiolla tulostat tarvittavineen html juttuineen.

Jos tarvitset RSS niin teet toisen viewin joka tulostaa RSS muotoon, näin sun ei tarvitse tehdä mitään turhia muutoksia.

Turvallisuuden kannaltahan ei ole mitään väliä miten teet, kunhan koodi on muutun turvallista. Mutta kun html eikä muutkaan ole sotkemassa, niin tällöin pysyy selvempänä ja huomaat virheet helpommin.

Äänestä
  • RSS-syötteitä en nyt tässä tarvitse.

    "
    Turvallisuuden kannaltahan ei ole mitään väliä miten teet, kunhan koodi on muutun turvallista. Mutta kun html eikä muutkaan ole sotkemassa, niin tällöin pysyy selvempänä ja huomaat virheet helpommin."

    Kerran tein J2EE:llä tietokantatoimintoa html-sivulle ja pp:nä toimiva kaveri sanoi mulle, ettei missään nimiessä saa ympätä toiminnallisuuksien koodia html:n sekaan. Viitaten siihen, että sivuston lähdekoodia voisi kopioida ja näin ollen harjoittaa hakkerointia. Mutta eihän ne J2EE- ja PHP-koodit näy jos klikkaat sivun lähdekoodit näkyviin?!

    En siis ollut töissä hänellä, vaan käytiin kerran aihetta läpi hänen kanssaan.

    Äänestä

  • skoodari kirjoitti:

    RSS-syötteitä en nyt tässä tarvitse.

    "
    Turvallisuuden kannaltahan ei ole mitään väliä miten teet, kunhan koodi on muutun turvallista. Mutta kun html eikä muutkaan ole sotkemassa, niin tällöin pysyy selvempänä ja huomaat virheet helpommin."

    Kerran tein J2EE:llä tietokantatoimintoa html-sivulle ja pp:nä toimiva kaveri sanoi mulle, ettei missään nimiessä saa ympätä toiminnallisuuksien koodia html:n sekaan. Viitaten siihen, että sivuston lähdekoodia voisi kopioida ja näin ollen harjoittaa hakkerointia. Mutta eihän ne J2EE- ja PHP-koodit näy jos klikkaat sivun lähdekoodit näkyviin?!

    En siis ollut töissä hänellä, vaan käytiin kerran aihetta läpi hänen kanssaan.

    Normaalisti ei näykkään mutta saattaa tulla tilanteita, jossa php:ta tai jsp:tä ei käännetäkkään vaan ne lähetetään suoraan asiakkaalle. http://www.phpfreaks.com/tutorial/php-security/page5

    Äänestä

  • skoodari kirjoitti:

    RSS-syötteitä en nyt tässä tarvitse.

    "
    Turvallisuuden kannaltahan ei ole mitään väliä miten teet, kunhan koodi on muutun turvallista. Mutta kun html eikä muutkaan ole sotkemassa, niin tällöin pysyy selvempänä ja huomaat virheet helpommin."

    Kerran tein J2EE:llä tietokantatoimintoa html-sivulle ja pp:nä toimiva kaveri sanoi mulle, ettei missään nimiessä saa ympätä toiminnallisuuksien koodia html:n sekaan. Viitaten siihen, että sivuston lähdekoodia voisi kopioida ja näin ollen harjoittaa hakkerointia. Mutta eihän ne J2EE- ja PHP-koodit näy jos klikkaat sivun lähdekoodit näkyviin?!

    En siis ollut töissä hänellä, vaan käytiin kerran aihetta läpi hänen kanssaan.

    "RSS-syötteitä en nyt tässä tarvitse."

    Juu, mutta kyllä se laajennettavuus kannattaa ottaa huomioon, sekä onhan tuo paljon helpommin ylläpidettävä varsinkin jos tiedostoja tulee paljon.

    Tuossa toiminnallisuus tulostus samassa on helppo päätyä virheeseen, jossa RSS, HTML, JSON jne... on omat PHP-tiedostonsa. Tuolloin pieni muutos toiminnallisuudessa jodut päivittämään sen x määrään tiedostoja.


    "Kerran tein J2EE:llä tietokantatoimintoa html-sivulle ja pp:nä toimiva kaveri sanoi mulle, ettei missään nimiessä saa ympätä toiminnallisuuksien koodia html:n sekaan. Viitaten siihen, että sivuston lähdekoodia voisi kopioida ja näin ollen harjoittaa hakkerointia."

    Totta, että PHP-tulkki voi seota jne... jolloin PHP-koodi tulee näkyviin, tuolta pystyy suojautumaan jos pystyy laittamaan tärkeät PHP-tiedostot kansioon mihkä ei netistä pääse, jos ei pysty niin .htaccess (deny from all) auttaa jossain määrin. Jos käyttää muiden tekemiä julkisia scriptejä niin silloin yleensä riittää tunnus/salasana erilleen, koska PHP-koodin saa tekijän sivuilta.

    Vaikka toiminnallisuus ja HTML olisikin samassa, niin sen pystyy suojaamaan tuolla tavalla, joten se ei muuta asiaa.

    Äänestä

  • ejjej kirjoitti:

    "RSS-syötteitä en nyt tässä tarvitse."

    Juu, mutta kyllä se laajennettavuus kannattaa ottaa huomioon, sekä onhan tuo paljon helpommin ylläpidettävä varsinkin jos tiedostoja tulee paljon.

    Tuossa toiminnallisuus tulostus samassa on helppo päätyä virheeseen, jossa RSS, HTML, JSON jne... on omat PHP-tiedostonsa. Tuolloin pieni muutos toiminnallisuudessa jodut päivittämään sen x määrään tiedostoja.


    "Kerran tein J2EE:llä tietokantatoimintoa html-sivulle ja pp:nä toimiva kaveri sanoi mulle, ettei missään nimiessä saa ympätä toiminnallisuuksien koodia html:n sekaan. Viitaten siihen, että sivuston lähdekoodia voisi kopioida ja näin ollen harjoittaa hakkerointia."

    Totta, että PHP-tulkki voi seota jne... jolloin PHP-koodi tulee näkyviin, tuolta pystyy suojautumaan jos pystyy laittamaan tärkeät PHP-tiedostot kansioon mihkä ei netistä pääse, jos ei pysty niin .htaccess (deny from all) auttaa jossain määrin. Jos käyttää muiden tekemiä julkisia scriptejä niin silloin yleensä riittää tunnus/salasana erilleen, koska PHP-koodin saa tekijän sivuilta.

    Vaikka toiminnallisuus ja HTML olisikin samassa, niin sen pystyy suojaamaan tuolla tavalla, joten se ei muuta asiaa.

    Kuinkahan monessa tapauksessa noin huolellisesti hoidetaan tuo koodien piilottelu? Jotenkin on semmoinen tunne, että ei kovin monessa. Pankkien sivustoja lukuun ottamatta tietenkin.

    Esim. firmojen nettisivuja/portaaleja tehdessä tuskin on suunnittelijat ajatelleet asiaa tietoturvan kannalta.

    Olen jokun verran käyttänyt .htacces:a, mutta kerrotko mitä tuolla (deny from all) tarkoitetaan ja miten se määritetään .htaccesiin? Tarkoititko, että tuolla salattaisiin se hakemisto, missä on kaikki php-skriptit (esim. tietokannan avaus jossa näkyy tunnarit ja passut)?

    Äänestä

  • skoodari kirjoitti:

    Kuinkahan monessa tapauksessa noin huolellisesti hoidetaan tuo koodien piilottelu? Jotenkin on semmoinen tunne, että ei kovin monessa. Pankkien sivustoja lukuun ottamatta tietenkin.

    Esim. firmojen nettisivuja/portaaleja tehdessä tuskin on suunnittelijat ajatelleet asiaa tietoturvan kannalta.

    Olen jokun verran käyttänyt .htacces:a, mutta kerrotko mitä tuolla (deny from all) tarkoitetaan ja miten se määritetään .htaccesiin? Tarkoititko, että tuolla salattaisiin se hakemisto, missä on kaikki php-skriptit (esim. tietokannan avaus jossa näkyy tunnarit ja passut)?

    "Kuinkahan monessa tapauksessa noin huolellisesti hoidetaan tuo koodien piilottelu?"

    Vaikea sanoa, aika pitkälle riippuu onko tekijä kiinostunut ottamaan selvää tietoturva asioista vai ei. Suutemmilla firmoissa asia on hieman paremmin kuin yksityisillä koodareilla, kun on käytössä erillaisia koodintestaus juttuja jne....


    "Esim. firmojen nettisivuja/portaaleja tehdessä tuskin on suunnittelijat ajatelleet asiaa tietoturvan kannalta."

    Monetkin ajattelee nykyään tietoturvaa, varsinkin kun siitä on uutisoitu paljon. Tosin on niitä huonosti tehtyjä paljonkin suomessa jopa nettikauppoja joilla kannan tunnukset/salasanat ovat .inc päätteisenä joita pääsee katsomaan selaimella.


    "Olen jokun verran käyttänyt .htacces:a, mutta kerrotko mitä tuolla (deny from all) tarkoitetaan ja miten se määritetään .htaccesiin?"

    Lisäät tuon tekstin .htaccess tiedostoon ja laitat sen siihen hakemistoon minkä haluat suojata, tuon jälkeen kaikki saa error 401 ilmoituksen (tuolla siis estetään kaikkien pääsy hakemistoon), mutta jos mahdollista niin kannattaa sijoittaa hakemistoon mihkä netistä ei pääse. PHP-scriptit toimii suoraan palvelimella, jolloin nuo eivät vaikuta sen toimintaan.


    "Tarkoititko, että tuolla salattaisiin se hakemisto, missä on kaikki php-skriptit (esim. tietokannan avaus jossa näkyy tunnarit ja passut)?"

    Kyllä tarkoitin (index.php on ainoa PHP-tiedosto jota et sinne laita), tuonne hakemistoon ei laiteta kuvia, JS-scriptejä jne...

    Sitten teet index.php tiedoston joka käsittelee sivupyynnön ja includettaa tarvittavat tiedostot suojatusta hakemistosta. Tuohon index.php tiedostoon ohjaat kaikki tai halutut sivupyynnöt .htaccess jutulla riippuen miten haluat sivusi toteuttaa.


    Yksinkertasimmillaan vaikka näin katsoo että sivu muuttuja on vain kirjaimia sekä includettava tiedosto on olemassa.


    http://sivusi.com/etusivu

    .htaccess
    RewriteEngine On
    RewriteRule ^([a-zA-Z] )$ index.php?sivu=$1
    RewriteRule ^([a-zA-Z] )/$ index.php?sivu=$1


    index.php


    salaisuuksia/etusivu.php



    Tohon toki kannattaa lisätä, jos sivu muuttuja tyhjä niin mennään etusivulle, sekä virheen käsittelyäkin paremmaksi. Mutta tajunnet idean.

    ^([a-zA-Z] )$ on säännöllinenlauseke, hyväksyy kirjaimet a-z isoina ja pieninä. $1 sisältää sitten tämän datan.

    HUOMIOI että http://sivusi.com?sivu=../jotain toimii myös, siks pitää tarkistaa tuo sivu muuttuja.

    Äänestä

  • ejjej kirjoitti:

    "Kuinkahan monessa tapauksessa noin huolellisesti hoidetaan tuo koodien piilottelu?"

    Vaikea sanoa, aika pitkälle riippuu onko tekijä kiinostunut ottamaan selvää tietoturva asioista vai ei. Suutemmilla firmoissa asia on hieman paremmin kuin yksityisillä koodareilla, kun on käytössä erillaisia koodintestaus juttuja jne....


    "Esim. firmojen nettisivuja/portaaleja tehdessä tuskin on suunnittelijat ajatelleet asiaa tietoturvan kannalta."

    Monetkin ajattelee nykyään tietoturvaa, varsinkin kun siitä on uutisoitu paljon. Tosin on niitä huonosti tehtyjä paljonkin suomessa jopa nettikauppoja joilla kannan tunnukset/salasanat ovat .inc päätteisenä joita pääsee katsomaan selaimella.


    "Olen jokun verran käyttänyt .htacces:a, mutta kerrotko mitä tuolla (deny from all) tarkoitetaan ja miten se määritetään .htaccesiin?"

    Lisäät tuon tekstin .htaccess tiedostoon ja laitat sen siihen hakemistoon minkä haluat suojata, tuon jälkeen kaikki saa error 401 ilmoituksen (tuolla siis estetään kaikkien pääsy hakemistoon), mutta jos mahdollista niin kannattaa sijoittaa hakemistoon mihkä netistä ei pääse. PHP-scriptit toimii suoraan palvelimella, jolloin nuo eivät vaikuta sen toimintaan.


    "Tarkoititko, että tuolla salattaisiin se hakemisto, missä on kaikki php-skriptit (esim. tietokannan avaus jossa näkyy tunnarit ja passut)?"

    Kyllä tarkoitin (index.php on ainoa PHP-tiedosto jota et sinne laita), tuonne hakemistoon ei laiteta kuvia, JS-scriptejä jne...

    Sitten teet index.php tiedoston joka käsittelee sivupyynnön ja includettaa tarvittavat tiedostot suojatusta hakemistosta. Tuohon index.php tiedostoon ohjaat kaikki tai halutut sivupyynnöt .htaccess jutulla riippuen miten haluat sivusi toteuttaa.


    Yksinkertasimmillaan vaikka näin katsoo että sivu muuttuja on vain kirjaimia sekä includettava tiedosto on olemassa.


    http://sivusi.com/etusivu

    .htaccess
    RewriteEngine On
    RewriteRule ^([a-zA-Z] )$ index.php?sivu=$1
    RewriteRule ^([a-zA-Z] )/$ index.php?sivu=$1


    index.php


    salaisuuksia/etusivu.php



    Tohon toki kannattaa lisätä, jos sivu muuttuja tyhjä niin mennään etusivulle, sekä virheen käsittelyäkin paremmaksi. Mutta tajunnet idean.

    ^([a-zA-Z] )$ on säännöllinenlauseke, hyväksyy kirjaimet a-z isoina ja pieninä. $1 sisältää sitten tämän datan.

    HUOMIOI että http://sivusi.com?sivu=../jotain toimii myös, siks pitää tarkistaa tuo sivu muuttuja.

    Vaikuttaisi fiksulta, tosin hieman enemmän säätämistä mutta jospa se loppujen lopuksi on kannattavaa. En siis ole tekemässä nyt mitään tietoturvallista sivustoa, mutta mielenkiinnon kannalta sekä jatkoa ajatellen vaan kyselen.

    Tuli mieleen, että vaikuttaako tuo sivukyselykäsittely millä tavalla sivuston käytettävyyteen? Eli jos on sivulla jotain flash-blingbling-virityksiä ja jokainen sivu tarkistetaan, niin voiko sivujen latautumisesa ilmetä hidasteluja (jos ei flashin lataamista huomioida)?

    Äänestä

  • skoodari kirjoitti:

    Vaikuttaisi fiksulta, tosin hieman enemmän säätämistä mutta jospa se loppujen lopuksi on kannattavaa. En siis ole tekemässä nyt mitään tietoturvallista sivustoa, mutta mielenkiinnon kannalta sekä jatkoa ajatellen vaan kyselen.

    Tuli mieleen, että vaikuttaako tuo sivukyselykäsittely millä tavalla sivuston käytettävyyteen? Eli jos on sivulla jotain flash-blingbling-virityksiä ja jokainen sivu tarkistetaan, niin voiko sivujen latautumisesa ilmetä hidasteluja (jos ei flashin lataamista huomioida)?

    "Vaikuttaisi fiksulta, tosin hieman enemmän säätämistä"

    Kerran kun tekee tuon index.php tämän jälkeen ei ole mitään säätämistä, vain scriptien tallennus hakemisto muutuu. Kun tekee kunnolla niin pystyt käyttämään suoraan tuota index.php muissa jutuissa.

    Tosin yhä suosittelen, että ainakin vilkaset http://framework.zend.com/manual/en/zend.controller.html ja http://framework.zend.com/manual/en/zend.layout.html siis MVC toteutusta alat käyttelee.


    "Tuli mieleen, että vaikuttaako tuo sivukyselykäsittely millä tavalla sivuston käytettävyyteen?"

    Kyllä ja ei. Tuolla esimerkilläni saat helpommat osoitteet joten se parantaa käytettävyyttä muuta vaikutusta sillä ei olekkaan. .htaccess muokkaamalla saat .php päätteen mikäli haluat.


    "jos on sivulla jotain flash-blingbling-virityksiä ja jokainen sivu tarkistetaan, niin voiko sivujen latautumisesa ilmetä hidasteluja"

    Kyllä jokainen PHP-functio hidastaa hieman, mutta puhutaan millisekunneista mitä tuo hidastaa. Joten sivulla kävijä ei tuota asiaa huomaa, jos hidastelua on niin se johtuu palvelimen ongelmista. Asian voi helposti itsekkin testata, teet mittaus scriptin ja loopin sisään laitat koodin jonka nopeutta haluat testata, tämä kannattaa tehdä ei julkisella palvelimella jotta saa suhtkoht tasaisen testiympäristön.

    Ehkäpä FLASHin tilalta vois käyttää http://fi2.php.net/flush

    Äänestä

Kommentoi aloitusta


skoodari kirjoitti:

Palautan vanhoja PHP-oppeja mieleen, kun tässä ei ole tullut pelehdittyä PHPn kanssa kahteen vuoteen.

Aikoinaan tuli lätkittyä php-koodia html:n sekaan ihan surutta. Mutta onko se turvallisuuden ja ylläpidettävyyden kannalta järkevää? Tuskin, paitsi etten osaa perustella :P

Hahmottelin vähän toimintaa siten, että tein php-funktioille oman include-tiedoston, jota kutsutaan tarvittaessa heti sivun alussa. Mutta sitten ajatus nyrjähti, kun hokasin että mites saat vaikka tietokantahaun tulostumaan haluttuun html-tableen. Table olisi täten määriteltävä tkhaku-funktiossa. Noh, mites saat sen tablen sitten asettumaan haluttuun positioon itse html-sivulle xD

Pitänee kokeilla sitten niin, että php-funkkarit on include-tiedostossa, mutta html-koodissa on kuitenkin noita funktioiden kutsuja niissä kohdissa, mihin esim. halutaan kannan sisältöä kutsua. Sekametelisoppahan siitä syntyy, vai syntyykö?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu