Jump to content
php.lv forumi

Datubāzē paroļu kodēšana.


Maaren

Recommended Posts

Kavacky, nujā, es redzēju, bet tu taču nevari paļauties uz to, ka ļaunais hakeris netiks pie koda ? :)

 

Tāpēc man labāk patīk (sāku tā darīt tikai pavisam nesen) - taisu visparastāko saltu - kā arī piemetu klāt kaut kādu savu custom slepeno stringu (kas, protams, nav slepens, ja ir pieeja kodam :)).

Link to comment
Share on other sites

Par īsu tas sāls, manuprāt.

No savas puses pārdomām ieteiktu vēl glabāt paroles hashu šifrētā veidā:

$key_php=mysql_realescape(pack('H*','86b6de905bbee18b3425f7e5974c1cad7e24ec06a707a2766c5988c20ebc7337')); //šī būs šīs web aplikācijas slepenā atslēga.
mysql_query("check_pw($uid,$parole, $key_php)"); //ar šo pārbauda, vai ievadīta pareiza parole
mysql_query("set_pw($uid,$hash_parole,$sals,$key_php)");//ar šo uzstāda hashoto paroli un sāli

Un attiecīgi MySQL pusē ir definētas šādas funkcijas:

check_pw un set_pw, kurās definēta konstante: @mysql_key (piemēram, @mysql_key=0x76AE12FF168123812FAD23897423127631297612378127123129761237812712;), kura apvienojumā ar padoto $php_key dod šifrēšanas atslēgu:

AES_ENCRYPT(@parole,AES_ENCRYPT(@mysql_key, @php_key));

AES_ENCRYPT(@sals,AES_ENCRYPT(@mysql_key,@php_key));

Ar pieejas tiesībām atļaut salt un password laukiem piekļūt tikai procedūras lietotājam, procedūru laist ar tās izveidotāja (vienīgā lietotāja, kam tiesības lasīt/rakstīt password/salt laukus) tiesībām, izmantojot lietotāju, kam ir tiesības laist tikai šīs divas procedūras, bet ne izpildīt patvaļīgus SQL pieprasījumus

Tādā veidā - ļaundarim datu bāzes dati ir derīgi tikai un vienīgi, ja tiek dabūts arī PHP aplikācijas konfigurācijas fails un ja ir dabūta arī storētā funkcija, kurā ir SQL puses šifrēšanas atslēga.

Link to comment
Share on other sites

×
×
  • Create New...