Ajattelin rueta rakentamaan kokemuksen vuoksi keskustelupalstaa.. Tällä hetkellä ajatus tuntuu hyvinkin yksinkertaiselta toteuttaa, mutta ajattelinkin kysellä täältä hieman ideoita miten tämä tulisi toteuttaa ja mitä tulee ottaa huomioon tätä tehdessä.
Vaatimuksinahan nyt alkuun on tietenkin
- Kirjautuminen
- Keskustelun aloittaminen
- Vastaaminen
- Oman vastauksen muokkaaminen määräaikaan mennessä
( tähän varsinkin kaipaan toteutus vinkkejä )
- Tietoturvallisuus ( Tähän ei saa koskaan liikaa vinkkejä )
- Laillisuus, sisällön tarjonta, käyttöehdot
( tämä ei varsinaisesti kuulu tänne, mutta jos tietoa on niin kiitoksia paljon )
Kiitoksia mahdollisista vinkeistä.
Suosittelen, että lueskelet/tutkit oppaita foorumien teosta ja saat siitä sitten vähän mallia. Esimerkiksi tämä opas kannattaa tsekata.
En ole todellakaan mikään asiantuntija, mutta näkisin että vastaamisesta ei juuri mitään haittaakaan ole - ei se ainakaan estä kokeneempia vastaamasta. Joten kirjoitan mitä itsellä tulee mieleen näistä (oli hyötyä tai ei ;). Enkä tiedä sinun taitotasoa mutta kirjoitan nyt kuitenkin jotain. :D
Vasta_alkaja kirjoitti:
Vaatimuksinahan nyt alkuun on tietenkin
- Oman vastauksen muokkaaminen määräaikaan mennessä
( tähän varsinkin kaipaan toteutus vinkkejä )
Itse näen turhana ko. ominaisuuden, siis että ei voi muokata tietyn ajan jälkeen, mutta sillä nyt ei ole väliä. Eli siis tuonhan pitäisi olla aivan simppeli juttu. Jokaisella viestillä oma tunnistenumero tms tietokannassa (sekä aika jolloin viesti on postattu) ja sieltä etsit halutun viestin jota muokataan, sitten avaat muokkaussivun jonka isoon textboxiin laitat vanhan viestin ja sitten käyttäjä voi sitä muokata ja painaa tallenna.
Samalla kun tunnistenumeroa luetaan, luetaan se aika ja katsotaan onko nykyhetken ja edellisen kerran välillä riittävän pieni aika jotta muokkaus sallitaan. ihan simppeliä esim.
if($lahetetty_aika + $sallittu_aika < time()) { MUOKKAUSLINKKI LAITETAAN } else { MUOKKAUSLINKKIÄ EI LAITETA }
Vasta_alkaja kirjoitti:
- Tietoturvallisuus ( Tähän ei saa koskaan liikaa vinkkejä )
- Laillisuus, sisällön tarjonta, käyttöehdot
( tämä ei varsinaisesti kuulu tänne, mutta jos tietoa on niin kiitoksia paljon )
Näistä löytyy netistä varmasti paljon asiaa. Tietoturva-asioista päällimmäisenä tulee mieleen salasanan käsittely sekä MySQL-kyselyiden turvallisuus - esimerkiksi: salasana on tietokannassa VAIN md5-hashina, ja MySQL-kyselyissä käyttäjältä tuleva tieto ei pääse 'suoraan' kyselyyn, eli SQL-injektio ei ole mahdollinen, tästä lisää googlella.
Käyttäehdoista en nyt osaa sanoa muuta, kun että kannattaa laittaa perushuttua: et ole vastuussa mistään, Suomen lakia on noudatettava, pidätät ohjelmiston oikeudet jnejne.
Yksi tärkeimmistä jutuista mitä tulee noin isosta projektista mieleen on, että suunnittelet sen erittäin tarkasti, ennenkun alat koodaamaan. Mitä funktioita täytyy kirjoittaa, miten nimeät kaiken, mitä muita säännönmukaisuuksia noudatat projektissa ja ylipäätään kaikki toteutuksen asiat, jotka ovat toisistaan riippuvaisia, 100% selväksi ennen aloittamista.
Suunnittele ensin ominaisuudet ja luo tietokanta, jossa ovat ominaisuuksien kannalta tarvittavat tiedot. Tee sitten funktiot tai luokat, joilla nämä ominaisuudet toimivat. Nämä onkin lopuksi helppo yhdistää kunnon käyttöliittymään.
Tietoturvallisuudessa ei minusta ole kerta kaikkiaan mitään ihmeellistä. Nyrkkisääntöinä voi pitää näitä kahta:
Kiitoksia näistä vastauksista.. On kait se maltettava aloittaa siitä kaikista tympeimmästä ja suunniteltava tarkkaan kaikki ominaisuudet ja luotava tietokanta sen pohjalta.. Palaanpa asiaan matkan aikana ja kyselen lisää.. Saatanpa laittaa välillä hieman raapustuksiakin tänne, jos jotain kiinnostaa kommentoida ja jaella vinkkejä matkan aikana.
Kiitoksia kuitenkin jo tästä ja paljon.
Itseäni mietityttää tietoturvassa se, että vaikkaa syötteet puhdistetaan ja injektoituminen estetäänkin, niin mikä on esim. intuntojen turvallisuuden laita...
Mitä tuo (My)SQL-lauseessa oleva "--" tarkoittaa? Tarkoitan siis tuota Metabolixin esimerkkiä.
Merkintä aloittaa kommentin, eli sen jälkeen tulevat merkit eivät vaikuta kyselyyn.
Tuossa esimerkissä ideana on, että jos kysely on vaikkapa
SELECT grade FROM Students WHERE (name = '?') AND (group = 4)
ja kysymysmerkin paikalle laitetaan
Robert'); DROP TABLE Students; --
niin tietokantaan annettava kysely on
SELECT grade FROM Students WHERE (name = 'Robert'); DROP TABLE Students; -- ') AND (group = 4)
Tämä hakee ensin Robertin arvosanan ja poistaa sitten kaikki oppilaiden tiedot tietokannasta. Kommentin avulla alkuperäisen kyselyn jäänne ei häiritse.
(Jos käytössä on PHP ja MySQL, tämä ei kyllä taida olla mahdollista, koska funktiolle mysql_query voi antaa kerrallaan vain yhden kyselyn.)
Aihe on jo aika vanha, joten et voi enää vastata siihen.