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

968

    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. Apua, Gogi ja Kia tippuivat TTK:sta! Oliko Gogin ja Kian tiputus mielestäsi oikein?

      Gogi ja Kia tippuivat monen yllätykseksi sunnuntaina TTK:sta. Oliko tämä mielestäsi oikein näin vai kenen olisi pitänyt
      Tanssii tähtien kanssa
      72
      1814
    2. Taas poistuu ABC, nyt Salossa

      Ei ole enää ihmisillä varaa ostaa nakkisämpylää myymälän puolelta. Viimeiset roposet menevät polttoaineeseen. Takana on
      Maailman menoa
      110
      1655
    3. Irak aikoo laskea tyttöjen avioitumisikää yhdeksään vuoteen

      Myös avioero naisen aloitteesta kielletään https://yle.fi/a/74-20123694
      Maailman menoa
      252
      1245
    4. Millainen luonne sinä olet?

      Itse olen innovatiivinen ja kuunteleva, sekä avoin uusille asioille. Mieheltä
      Ikävä
      182
      1202
    5. Suomalaisista nuorista miehistä huolestuttava tutkimus Joka neljäs hyväksyy naisiin kohdistuvan vä

      Suomalaisista nuorista miehistä huolestuttava tutkimus – Joka neljäs hyväksyy naisiin kohdistuvan väkivallan Joka neljä
      Maailman menoa
      235
      1173
    6. Oletko koskaan miettinyt miltä lähempi fyysinen

      kontakti tuntuisi hänen kanssaan? Sitä menee sekaisin pelkästä olemuksesta, niin kosketus voisi olla aika räjäyttävää.
      Ikävä
      45
      1087
    7. Mukavaa maanantai päivää

      Hyvää huomenta. 🐺❄️⚜️☕🧡
      Ikävä
      212
      1054
    8. Vasemmistoliiton Minja Koskela lyttäsi Halla-ahon...

      ...arvion Usan presidentin vaalien voiton syistä, ja löi pöytään täsmälleen oikean arvion. Koskelan arviota tukevat myös
      Maailman menoa
      293
      912
    9. Aina vaan kalliimmaksi tulee NATO Suomelle

      "Kaikkonen ja Kopra: Nato vaatii pian lisää panostusta jäsenmailtaan" https://www.is.fi/politiikka/art-2000010824365.htm
      Maailman menoa
      221
      890
    10. Mitä kivaa sanoisit kaivatullesi?

      Vai osaatko sanoa toisista mitään hyvää?
      Ikävä
      56
      767
    Aihe