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

skoodari

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ö?

10

1139

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • kokeileppa sitä
      • skoodari

        Mites tuo nyt liittyy asiaan?


    • ejjej

      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.

      • skoodari

        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.


      • tilanteessa
        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


      • ejjej
        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.


      • skoodari
        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)?


      • ejjej
        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.


      • skoodari
        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)?


      • ejjej
        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


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Hallitus pyrkii rajoittamaan kaupan omien halpamerkkien myyntiä

      Helsingin Sanomien mukaan hallitus valmistelee lakihanketta, joka suitsii kaupan valtaa ja rajoittaa omien halpamerkkien
      Yhteiskunta
      99
      2266
    2. Kysy jotain kaivatultasi

      Tämä ketju on sitä varten.
      Ikävä
      218
      1911
    3. Huomenna sähkö maksaa jo yli 60 snt/kWh. Milloin ALV putoaa?

      Kysynkin persuilta, että milloin aiotte pudottaa sähkön arvonlisäveron kuten Marinin hallitus teki sähkön hinnan noustes
      Maailman menoa
      176
      1742
    4. Persut päättivät hiilivoimaloiden alasajosta

      Persut ovat Suomen kansan vastainen putinistiporukka, josta nyt maksamme kovaa hintaa.
      Maailman menoa
      101
      1316
    5. Tapettu

      On joku kangaskadulla perjantaina
      Sotkamo
      38
      1210
    6. Mitä ajattelet hänestä

      Millaisena pidät kaivattuasi?
      Ikävä
      122
      1108
    7. Onko jollekin vielä epäselvää Raamatun kanta homoseksuaaliseen käytökseen?

      😺 On oma mielipiteesi mikä tahansa on hyvä muistaa, mikä on Jumalan mielipide. Edelliset ketjut ovat tulleet täyteen jo
      Luterilaisuus
      276
      813
    8. 90kW kulutus

      Joku kirjoitti sellaisesta tehomaksuaiheen yhteydessä. Tuollainen kulutushan vaatisi pääsulakkeiden kooksi jo vaikka mit
      Maailman menoa
      180
      681
    9. Mietin sua liikaa

      Mietin nytkin sitä, että millaista se olisi tulla kotiin, kun sinä olisit täällä vastassa. Tai niin päin, että sinä tuli
      Ikävä
      47
      645
    10. Vanhemmassa miehessä

      on sellaista elämän mukana tullutta viehättävää charmia. Hän paranee iän myötä niinkuin hyvä viini tai juusto! Tuli tuo
      Ikävä
      50
      641
    Aihe