Jump to content
php.lv forumi

Kaa pareizaak glabaat paroles


NeoX

Recommended Posts

Sveiki!

 

Mani interesee kur labaak glabaat paroles, kuras izmanto PHP skripts? Vai taas rakstiit pa taisno skriptaa vai glabaat kaadaa atseviskjaa failaa???

 

Ja glabaa atseviskaa failaa, tad kaa tur iisti ir ar taam permisijaam? Cik saprotu taadu failu var atvert un pastiities jebkursh ar savu brovzeri!???

 

Iesakaat kaa man dariit!!!

Link to comment
Share on other sites

Paroles vajag glabāt tajos pašos .php failos, proti teiksim nevis taisīt config.inc (vai jebkādu citu failu kas netiek pārsēts ar php) un tad to includēt bet config.php un tad ja glabāsi šādā formātā

<? $parole = 'superduper'; ?> tad no pārlūka atverot config.php nekas izvadīts netiks.

 

Protams tas nepasargā no tā ka kāds kuram ir pieeja pie servera paroles var aplūkot - taču tas jau ir cita līmeņa drošības jautājums (proti vai vieta/hostings kur .php skripti ir atrodas ir pietiekami droša un serviss profesionāls).

Taču arī šim ir risinājums - kriptēt jebšu encodēt .php failus. Līdz ar to ja arī kādam izdodas fiziski piekļut failiem, tad tie principā ir neizmantojami.

Šim gan nepieciešamas papildus instalēt dažus moduļus webserverī.

 

Populārākie encodētāji varētu būt - Zend Encoder (maksas produkts) http://www.zend.com/store/products/zend-encoder.php un uz servera lai šādus encodētus failus apstrādātu nepieciešams Zend Optimizer kas gan ir bezmaksas http://www.zend.com/store/products/zend-optimizer.php

 

Tad ir arī IonCube http://www.ioncube.com/

 

Pilnīgs bezmaksas verķis kas ir reizē arī labs accelerators ir eAccelerator http://eaccelerator.net

Link to comment
Share on other sites

jebkurā gadījumā - paroles ieteicams NEGLABĀT iekš plaintext - labāk tās šifrēt:

 

function cyph($parole){ return md5(md5($parole).'saltsaltsalt'); }, piemēram.

 

Tad pievienojot jaunu lietotāju viņa paroli failā/datubāzē ielikt šādi šifrētu, un pie katra ielogošanās mēģinājuma salīdzināt to ar šifrētu paroles lauciņā ievadīto paroli.

 

Pirms kāda laika tika drūmi 'hakots' eclub.lv - cilvēki brouzēja kaimiņu direktorijas un lasīja un tālāk izmantoja login/pass citu administrācijas sistēmām no failiem.

Jebkādā pietiekami sarežģitā veidā tās kriptējot varētu tādus gadījumus novērst.

Link to comment
Share on other sites

Paroles vajag glabāt tajos pašos .php failos, proti teiksim nevis taisīt config.inc (vai jebkādu citu failu kas netiek pārsēts ar php) un tad to includēt bet config.php un tad ja glabāsi šādā formātā

<? $parole = 'superduper'; ?> tad no pārlūka atverot config.php nekas izvadīts netiks.

 

Protams tas nepasargā no tā ka kāds kuram ir pieeja pie servera paroles var aplūkot - taču tas jau ir cita līmeņa drošības jautājums (proti vai vieta/hostings kur .php skripti ir atrodas ir pietiekami droša un serviss profesionāls).

Taču arī šim ir risinājums - kriptēt jebšu encodēt .php failus. Līdz ar to ja arī kādam izdodas fiziski piekļut failiem, tad tie principā ir neizmantojami.

Šim gan nepieciešamas papildus instalēt dažus moduļus webserverī.

 

Populārākie encodētāji varētu būt - Zend Encoder (maksas produkts) http://www.zend.com/store/products/zend-encoder.php un uz servera lai šādus encodētus failus apstrādātu nepieciešams Zend Optimizer kas gan ir bezmaksas http://www.zend.com/store/products/zend-optimizer.php

 

Tad ir arī IonCube http://www.ioncube.com/

 

Pilnīgs bezmaksas verķis kas ir reizē arī labs accelerators ir eAccelerator http://eaccelerator.net

16079[/snapback]

 

arii encoders nepalīdzēs ...

 

1. es inkludoju ekodētu config.php

2. izvadu print_r($GLOBALS);

3. atrodu mainīgo kas man ir interesants

 

manuprāt nav nevienas metodes kas pasargātu 100%

Link to comment
Share on other sites

jebkurā gadījumā - paroles ieteicams NEGLABĀT iekš plaintext - labāk tās šifrēt:

 

function cyph($parole){ return md5(md5($parole).'saltsaltsalt'); }, piemēram.

 

Tad pievienojot jaunu lietotāju viņa paroli failā/datubāzē ielikt šādi šifrētu, un pie katra ielogošanās mēģinājuma salīdzināt to ar šifrētu paroles lauciņā ievadīto paroli.

 

Pirms kāda laika tika drūmi 'hakots' eclub.lv - cilvēki brouzēja kaimiņu direktorijas un lasīja un tālāk izmantoja login/pass citu administrācijas sistēmām no failiem.

Jebkādā pietiekami sarežģitā veidā tās kriptējot varētu tādus gadījumus novērst.

16080[/snapback]

 

bet ja tev vajag parole konekcijai pie DB ? kā tu atkodēsi ? (tavs variants ir vienvirziena kriptēšana)

Link to comment
Share on other sites

Normaali ir glabaat includojamos failus Arpus WEB direktorijas

tobish tur kur var piekljuut tikai no locaalaas mashinas :)

Skripts pats par sevi ir kaa Locals Useris :)

tobish ja arii kaads tiks pie Web failiem - config failam vinsh klat netiks

- Ja tiks - tad jau buus pilniibaa uzlauzis visu serveri .. un tad vairs nav svariigi kaadaa formaataa tiek glabaatas paroles :(

Link to comment
Share on other sites

Normaali ir glabaat includojamos failus Arpus WEB direktorijas

tobish tur kur var piekljuut tikai no locaalaas mashinas :)

Skripts pats par sevi ir kaa Locals Useris :)

tobish ja arii kaads tiks pie Web failiem - config failam vinsh klat netiks

- Ja tiks - tad jau buus pilniibaa uzlauzis visu serveri ..  un tad  vairs nav svariigi kaadaa formaataa tiek glabaatas paroles :(

16085[/snapback]

 

 

vienīgais veids, kas pašlaik ienāca prātā enkodēt php failu ar konekcijas funciju + ar statisku stringu

 

<?php

$dbConn = DBIO::connect( 'useris', 'parole' );

?>

 

jākodē būs arī DBIO klases fails.

vienīgais tad pazūd konfigurācijas fīča

 

Bet te atkal problēma, hakeris vai admins var pārkompilēt PHP/db ext tā lai funkcija kaut kur dumpo iekšā failā padotos parametrus :)

 

tā kā, variantu te daudz un neviens nebūs 100% drošs

Link to comment
Share on other sites

Pirms kāda laika tika drūmi 'hakots' eclub.lv - cilvēki brouzēja kaimiņu direktorijas un lasīja un tālāk izmantoja login/pass citu administrācijas sistēmām no failiem.

Nu te jau ir datu fiziskā drošība un ne vairs no php koda atkarīga. Par ko akmens hostetāju lauciņā.

 

jākodē būs arī DBIO klases fails.

vienīgais tad pazūd konfigurācijas fīča

 

Bet te atkal problēma, hakeris vai admins var pārkompilēt PHP/db ext tā lai funkcija kaut kur dumpo iekšā failā padotos parametrus

 

tā kā, variantu te daudz un neviens nebūs 100% drošs

Protams :) Tad teiksim arī jāsāk lietot kriptēts slēgums uz DB (teiksim SSL uz mysql) lai nevarētu nosnifot ;)
Link to comment
Share on other sites

Failos var glabāt:

if(file_exists('uber_faili/'.sha1($_POST['user']).'.php')){

...

parole iekšā arī kriptēta

die();

sha1 hash;

...

bet visdrošākais būs tavs paša variants ;)

Link to comment
Share on other sites

bet ja tev vajag parole konekcijai pie DB ? kā tu atkodēsi ? (tavs variants ir vienvirziena kriptēšana)

 

konekcijai pie db normāli iekš plaintext paroli kautkur vajadzēs glabāt - include failā, piemēram. Ja nu ļoti vajag - 1 lietotāja sistēmām var $db_pass = substr(md5($login), 0,5).substr(md5($pass),0,5); etc izvirtības.

Ar šifrējamajām vairāk domāju CMS etc web sistēmu paroles, kas parasti ir daudzas un atšķirīgas .. gan no db lietotājvārda paroles, gan arī savā starpā :)

Edited by usver
Link to comment
Share on other sites

×
×
  • Create New...