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ö?
PHP:tä hönttämölön sekaan
10
968
Vastaukset
- kokeileppa sitä
Kokeile smartyä.
http://smarty.php.net- 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
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änyt721814Taas poistuu ABC, nyt Salossa
Ei ole enää ihmisillä varaa ostaa nakkisämpylää myymälän puolelta. Viimeiset roposet menevät polttoaineeseen. Takana on1101655Irak aikoo laskea tyttöjen avioitumisikää yhdeksään vuoteen
Myös avioero naisen aloitteesta kielletään https://yle.fi/a/74-201236942521245Millainen luonne sinä olet?
Itse olen innovatiivinen ja kuunteleva, sekä avoin uusille asioille. Mieheltä1821202Suomalaisista 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ä2351173Oletko 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ää.451087- 2121054
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ös293912Aina vaan kalliimmaksi tulee NATO Suomelle
"Kaikkonen ja Kopra: Nato vaatii pian lisää panostusta jäsenmailtaan" https://www.is.fi/politiikka/art-2000010824365.htm221890- 56767