PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
PHP ja turvalisus
Postitaja: PHP.ee 2002-01-09 13:24:19
Artikli "PHP ja turvalisus" kommenaarid kirjuta siia
RE: PHP ja turvalisus
Postitaja: kaabakaz 2002-01-23 14:22:04
väga hea ja vajalik teema. loodan, et aja jooksul täieneb uute nippidega.
RE: PHP ja turvalisus
Postitaja: UGen 2002-01-27 15:59:24
Lugesin, mõtlesin, tõra, mu scriptis on järelikult hulk auke (augusid):)

Viimati muudetud: 27-01-2002 16:00:08
Muutja: UGen
Põhjus: mitmus osastav sucks!

RE: PHP ja turvalisus
Postitaja: kaabakaz 2002-01-28 18:51:01
jutumärkide osa.
$sql='select * from users where nimi="'.$nimi.'"';

kas on mingi vahe, kui ma kirjutan hoopis nii:
$sql="select * from users where nimi='".$nimi."'";

(erinevus " ja ' kasutamisel)
RE: PHP ja turvalisus
Postitaja: atw 2002-01-31 00:58:41
Sinu ja turvalisuse seisukohast ei ole mingit vahet. Kuidas ise mugavam on.
RE: PHP ja turvalisus
Postitaja: wazup 2002-02-10 14:00:45
"select * from tabel where id='$id'" .... kas '' juba ise ei määra ära ? on ikka neid punkte ja "" lisaks vaja ?
RE: PHP ja turvalisus
Postitaja: Ico 2002-02-11 17:26:35
Oli see nüüd php-s või apaches täpselt ei mäleta kus igatahes kusagil ini-s sai ära keelata linkimise kõrgemale (root-u poole) kui webikataloogist ja see oli ka abiks. igakord lk uuendamisel ei tule meelde neid if ja switche täiendada.

RE: PHP ja turvalisus
Postitaja: RDK 2002-03-04 20:02:09
Natukene Cookie Login kaitseks...

Mina olen kasutanud login süsteemi, kus cookie väärtus on muutuja mõnes failis. Näiteks võiks õigeks väärtuseks olla mingi suvaline number (ala "authorized231248237578435") ja valeks väärtuseks (õige kirjutatakse üle väljalogimisel)lihtsalt "unauthorized". Sellist suvalist numbrit on praktiliselt võimatu ära arvata, pealegi on seda väga kerge muuta.

Ise olen kirjutanud faile laiendiga .php3 ja seetõttu on probleeme php4 kasutamisega :)
RE: PHP ja turvalisus
Postitaja: copraonu 2002-03-11 12:39:21
minu jutu m6te selles, et olen n2ind toredaid saite ja puha, mis isegi syya kannatavad, kuid mille turvalisuses on selline sygav auk, et oma systeemi kasutajad kujutavad endast potentsiaalset ohtu.
point selles, et iga mees v6ib teha command linelt 'cd /sinu/skripti/asukoht/' ja seda skripti karistamatult vaadata.

m6nikord on abiks php failid nii 2ra peita, et ka oma systeemi kasutajad neid kuidagi ei n2e. seda n2iteks juhul, kui skript sisaldab andmebaasiparoole v6i kui olete lihtsalt kide inimene.
ruudu 6igused olex abx, loomulikult eeldataxe, et os-x on linuxilaadne loom.

abiks jutt on sis j2rgmine: webiservu jooxeb juuserina apache (v6i misiganes juuser, ntx nobody). kataloog, kus asuvad sinu inc failikesed mis paroole ja asju sisaldavad, setitakse 0700-x, grupix ja omanikuks apache.
puust ja punasex...

chmod -R 0700 include_kataloom
chown -R apache include_kataloom
chgrp -R apache include_kataloom

webiserver ise n2eb mis seal sees on, suudab seal olevaid faile servida jne, aga yxki teine kasutaja otse ligi ei p22se.
kui kaitstud faile vaja muuta, tulep lihtsalt mingile juuserile lisagrupp anda... apache (v6i vastav grp).
kogu seda juttu v6ib muidugi eraldi failidele ka rakendada... maitse asi.
RE: PHP ja turvalisus
Postitaja: sau 2002-03-17 17:20:58
Hmm, lugesin läbi! Väga asjalik artikkel, sain isegi mõned tarkuseivad turvalisuse tagamiseks.

Edu ja jaksu selles tänuväärses töös...
Jan Urva aka Sau
RE: PHP ja turvalisus
Postitaja: jim 2002-05-06 03:09:19
Üldiselt hea ja kasulik jutt. Ainuke koht, kus ma pisut vastu vaidlen, on cookiedega seotud.
Nimelt ei pruugi cookied läbimõeldud kasutamisel sugugi probleeme tekitada. Cookies lihtsalt peaks hoidma mingit suvaliselt genereeritud koodi, mida kasutaja ei saa ära arvata, kõige lihtsamas variandis md5 hash, aga võib ka midagi veel keerulisemat välja mõelda. Selle koodi alusel siis teab php, mis kasutajaga tegemist on.
Põhimõtteliselt sama asja kasutatakse ka sessioonide juures - hoitakse ju sessiooni id -d samuti cookies, id ise näeb välja nagu md5 hash, nii et põhimõtteliselt toimib see samamoodi, nagu ma eelpool kirjeldasin.

Sry, kui millegagi mööda läks, pole php -d enam tükk aega kasutanud.
RE: PHP ja turvalisus
Postitaja: allans 2002-05-23 13:45:59
Olen vähe kasutanud Php-d, kuid olen rohkem kasutanud MySQL-i. Ja see t6ttu kommenteeriksin seda poolt natukene siin.

Nagu artiklis oli kirjutatud, et kasutaja v6ib juhtumisi panna sisse #, et järgnev tekst (näiteks parool) välja kommenteerida. Kuid selleks tuleks panna päringus where tingimuses parooli kysimine ettepoole: "select * from tabel where parool=psswrd and kasutaja=nimi"


Selleks, et kasutaja ei saaks suvaliselt lisada muid tingimusi nagu "or 1=1" selleks tuleks iga tingimus panna omaette sulgudesse: "select * from tabel where (parool=psswrd) and (kasutaja=nimi)" ja kui nyyd keegi lisab midagi, siis näeb see välja:"select * from tabel where (parool=psswrd) and (kasutaja=nimi or 1=1)". Seega peab vähemalt parool olema 6ige.


Sellisel juhul, kui tahetakse muuta parooli, tuleb kasutada parooli edasi andmisel muutujat, mida ei ole varem kasutatud ja ei kavatsetagi rohkem kasutada. Ja olulistemate tabelite korral tuleks kasutada selliseid väljade nimesid, mis ei ole just yldlevinud => adminn asemel pealik jne.


RE: PHP ja turvalisus
Postitaja: allans 2002-05-23 15:11:51
Lisaks eelnevale veel täienduseks parooli muutmise kohta.
Kui on soovi muuta parooli, siis v6ib kasutada ka update ja select käsku koos:

"update kasutaja set passwd=password($sisestuuspswd) where kid in (select kid from kasutaja where (passwd=password($sisestvanapswd)) and (kasutnimi=$sisestkasutnimi))"
RE: PHP ja turvalisus
Postitaja: eero h 2002-08-14 12:28:40
TSITEERITUD:

ettepoole: "select * from tabel where parool=psswrd and kasutaja=nimi"


Selleks, et kasutaja ei saaks suvaliselt lisada muid tingimusi nagu "or 1=1" selleks tuleks iga tingimus panna omaette



Selleks on hoopis jutumärgid.
"select * from tabel where parool='psswrd' and kasutaja='nimi'" puhul
OR vms lisamisel tekib:
"select * from tabel where parool='psswrd or 1=1' and kasutaja='nimi'". Sisestus ei karda sel juhul enam ka "#" märki.
Probleem oleks ainult juhul, kui kliendi sisestusest ülakomasid ei slashitaks (aga defaultina seda tehakse). Palavalt soovitaks siia juurde mysql password() funktsiooni kasutamise.

Veel: paha-paha on sellises v6rdluses LIKE kasutamine. See annab pahalasele võimaluse "%" sisestamisel kah selectist asjad kätte saada.


Cookie ei ole midagi ebaturvalist, kui seal salvestada sessiooni kontrollimiseks ainult mingit n-pikkusega random stringi, mida saab näiteks võrrelda eelnevalt kuskile tabelisse kirjutatuga. Ühe täiendava kontrolli lisamisel saab võimaluse ka sessiooni expiremiseks.


PS: artikli autor ei tea seda, et ..giga, ..gile lõppe eesti keele grammatika ei tunne. On hoopis ...gagi, ..legi.
RE: PHP ja turvalisus
Postitaja: kutt 2002-11-19 18:03:11
hää artikkel, mis te norite eesti keele pärast :P
RE: PHP ja turvalisus
Postitaja: vaalaskala 2003-01-20 17:17:42
mitte PHP ja turvalisus vaid programmeerijapoiste ABC
RE: PHP ja turvalisus
Postitaja: stepz 2003-01-21 12:24:09
Keegi võiks kirjutada natukene juttu sessioonide hijackimisest ka.

Ntx saata selle foorumi adminnile link http://www.php.ee/foorum/index.php?post=3293&PHPSESSID=e
siis oodata kuni ta sellel klikib ja sisse logib ning kasutada saiti ise sama sessiooni ID'ga. Nagu naksti oled adminni õigustega sees.
RE: PHP ja turvalisus
Postitaja: vaalaskala 2003-01-22 13:52:33
selle -> http://www.php.ee/foorum/index.php?post=3284 teema lõpuosas on ka sellise häki kohta ka väike abinõu pakutud
PHP ja turvalisus on huvitav kyll, aga.."PROBLEEM"
Postitaja: insanus 2003-03-06 17:56:04
kes v6ix minda idata? PHP turva augux v6ib sellest textist lugeta käsku fopen ning mina yhe targa raamatu abil tegin ka endale veidike php-d...

PHP kood:
 
$aeg
=date("D M j G:i:s Y");  $v=sprintf("%snAeg=%s"$v,$aeg);
$fv=fopen("f.txt","a");  fputs($fv,$v);  fclose($fv);

nagu n2ha on mul fopen kasutusel, kuid ma ei tea kas see on turvaline v6i ei ole
RE: PHP ja turvalisus on huvitav kyll, aga.."PROBLEEM"
Postitaja: kix 2003-04-08 12:19:39
omk!

fopen() asjadega seotud turvakalad esinevad enamasti siis kui failinimi on kasutaja poolt tulevatest andmetest kokku pandud - nt kui on skript

http://foo/bar.php?f=/etc/passwd

ja siis selle bar.php sees on

$fd = fopen($_GET["f"]);
echo fread($fd, filesize($_GET["f"]));

siis on paha-paha turvaauk, sest kasutaja saab systeemist suvalist faili vaadata, millele webiserveril 6igused on.

sinu postitatud koodis nii selget autku pole - failinimi on alati sama.

ainuke v6imalik probleem, mis selles on, on siis kui $v on kasutaja poolt m6jutatav ja sa kasutad seda faili sisu kuskil mujal, eeldades et seal on ntx aint yx reavahetus - st et teisel real on Aeg=bla, siis ntx v6ib kaval kasutaja $v sisse panna stringi
"tegin sedanAeg=foontegin toda"

ja siis see skript, mis seda faili loeb v6ib katki minna ntx.

p6mtselt turvalisus t2hendabki enamasti seda et sinu kood ei tohi usaldada kasutajat. isegi kui ta on enne autenditud ja 3 korda parooli kysitud, ikkagi ei tohi usaldada tema saadetud andmeid, vaid tuleb need hoolikalt yle kontrollida.

niiet kui sul on miski skript, mis teeb eelduseid, nagu ma enne kirjutasin, siis peaksid yle kontrollima et ega $v sees enne reavahetusi pole kui faili kirjutad..
RE: PHP ja turvalisus
Postitaja: mardicas 2003-10-02 18:39:15
Include käsku saab ka turvata nõnda:
oletame et mu index fail on abc/ kataloogis.
lisatavad failid on abc/menüü/
ja kui ma includen, siis include("menüü/$fail");
ja menüü kataloogi ei lähe ka andmeid sisaldavad failid.
paned andmeid sisaldavad failid niteks andmed/ kataloogi :)
või mis teie arvate?
swiche on väga tüütu kirjutada, eriti kui on tegemist lehega kus on väga palju lehti või lehte mille failinimed muutuvad.

Muidu on väga hea artikkel, eriti migneid asju ei leidnud mille vastu eksin, aga tean millest hoiduda :)
RE: PHP ja turvalisus
Postitaja: atw 2003-10-03 04:51:56
TSITEERITUD:

ja kui ma includen, siis include("menüü/$fail");
ja menüü kataloogi ei lähe ka andmeid sisaldavad failid.
paned andmeid sisaldavad failid niteks andmed/ kataloogi :)


Küsimus
Ja mis siis saab, kui häxx0r teeb nii, et:
$fail="../andmed/miskiasi.php";

Vastus:
Siis on path selline:
/menüü/../andmed/miskiasi.php
ja lõpptulemusena includetakse asi kataloogist /andmed

Viimati muudetud: 03-10-2003 04:52:08
Muutja: atw
Põhjus:

RE: PHP ja turvalisus
Postitaja: Jonts 2005-03-04 11:26:51
Väga tore jutt! Tuletas jälle konstandid meelde. :D Aga väike küsimus ka: Kas jägmisel viisil tehtud sisselogimissüsteem on ebaturvaline:

On küpsis 'usr', mille väärtus on seesolija kasutaja nimi
On küpsis 'psw', mille väärtus on seesolija parool md5'es
ja igakord, kui lehte laeb, kontrollitakse küpsiste järgi andmebaasist, kas kõik on korras.

On see väga jama süsteem ja kas sellel on mõni suurem turvaauk? (Muidugi võib küpsiseid ju disketiga endal kaasas kanda ja vastavasse arvutisse vajadusel kopeerida :P)
RE: PHP ja turvalisus
Postitaja: rahamies [at] hot [punkt] ee 2005-04-12 17:56:49
TSITEERITUD:
Väga tore jutt! Tuletas jälle konstandid meelde. :D Aga väike küsimus ka: Kas jägmisel viisil tehtud sisselogimissüsteem on ebaturvaline:

On küpsis 'usr', mille väärtus on seesolija kasutaja nimi
On küpsis 'psw', mille väärtus on seesolija parool md5'es
ja igakord, kui lehte laeb, kontrollitakse küpsiste järgi andmebaasist, kas kõik on korras.

On see väga jama süsteem ja kas sellel on mõni suurem turvaauk? (Muidugi võib küpsiseid ju disketiga endal kaasas kanda ja vastavasse arvutisse vajadusel kopeerida :P)
MInu meelst see küll väga turvaline pole. Ma miinimumina lisaksin veel md5'na ip ja kuupäeva/kellaja!

ddes3
RE: PHP ja turvalisus
Postitaja: peldik 2007-03-16 10:48:19
TSITEERITUD:


Küsimus
Ja mis siis saab, kui häxx0r teeb nii, et:
$fail="../andmed/miskiasi.php";

Vastus:
Siis on path selline:
/menüü/../andmed/miskiasi.php
ja lõpptulemusena includetakse asi kataloogist /andmed


Et user inputi puhul ei saa kunagi olla liialt paranoiline, siis teeb nupukas programmeerija kõigepealt $fail=preg_replace("/[^a-zA-Z0-9_-]/",'',$fail); include("/kata/loog/$fail.php") või readfile("/kata/loog/$fail.txt"). Sama moodi teeb ta ka paroolide ja loginitega ning magab rahulikumalt. Lennukisse lastakse turvakontrolli läbinud inimesed, mitte ei hakata lennukit pommikindlaks ehitama.

Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.0160830020905