Jump to content
php.lv forumi

Autorizēšanās sesijas in-depth


kristers_Z

Recommended Posts

Vēl viens scenārijs, kurā vienas sesijas ietvaros cilvēkam lēkā IP adrese ir pieslēgums caur mobilo operatoru (it īpaši tas attioecas uz Tele2, kuram pat IP adrešu diapazonu nav tik viegli nodefinēt) - ja izmanto Tor - tad vispār...

Ja Tev ir nopietna sistēma, tad IP adreses maiņa jāuzskata par anomāliju un atkarībā no apstākļiem, iespējams, sesija ir jāpārtrauc, vai jāveic pārautentifikācija. Katrā gadījumā jāvāc statistika par sesijas ietvaros notikušajām pārejām no vienas IP uz otru un jāmēģina saprast tendence, ja arī neaizsargās pret īpaši uz vienu lietotāju tēmētu uzbrukumu, tad varētu diezgan ātri konstatēt uzbrukuma mēģinājumu sistēmai kopumā.

Link to comment
Share on other sites

krister_Z,

kodu var apskatīties un linkot no githuba:

https://github.com/EllisLab/CodeIgniter/blob/develop/system/libraries/Session/drivers/Session_cookie.php#L417

Kā redzams, šajā rindā tiek pārbaudīts, vai $this->sess_match_ip === TRUE

Bet defaultā vertība ir false:

https://github.com/EllisLab/CodeIgniter/blob/develop/system/libraries/Session/drivers/Session_cookie.php#L82

 

Tātad ip pārbaude ir papildus fīča, kuru var pieslēgt, bet nav defaultā.

 

Bet vispār CI kūkiju bibliotēka ir diezgan dīvaina, dēļ tā, ka visi dati tiek kriptēti un glabāti pašos kūkijos. Manuprāt tas ir neefektīvi, jo šie dati tiek sūtīti katrā pieprasījumā, tai skaitā ajax un resursu failiem.

Es parasti daru tā, ka kūkijos glabāju tikai vērtību, pēc kuras var noteikt uz kuru sesiju vai lietotāju tā attiecas. Visi pārējie dati glabājas servera pusē.

Edited by codez
Link to comment
Share on other sites

Vēl viens scenārijs, kurā vienas sesijas ietvaros cilvēkam lēkā IP adrese ir pieslēgums caur mobilo operatoru (it īpaši tas attioecas uz Tele2, kuram pat IP adrešu diapazonu nav tik viegli nodefinēt) - ja izmanto Tor - tad vispār...

 

Jā, biju pamanījis IP lēkāšanu Tele2 tīklā. Man ir aizdomas ka tas tā varētu būt ari citos tīklos, arī ne tikai mobilajos. Tieši dēļ šīs problēmas es domāju, ka datora papildus autentificēšanu izmantojot IP nemaz nedrīkst veikt, jo lietotāji aiz šādiem tīkliem nemaz nevarēs izmantot sistēmu. Viņus visu laiku automātiski metīs laukā.

 

Tomēr, manuprāt, papildus drošību varētu panākt, ja šādu IP monitoringu ieviestu tikai administratoru kontiem. Piemēram, ja sistēmā reģistrēti 1000 parasti lietotāji un 10 administratori. Tas pat neradītu serverim noslodzi. Adminu konti ir prioritāte, jo no tiem iespējams sastrādāt vairāk malicious darbību. Tomēr jā - tas nepalīdz aizsargāt parastos lietotājus.

Link to comment
Share on other sites

Tātad ip pārbaude ir papildus fīča, kuru var pieslēgt, bet nav defaultā.

 

Bet vispār CI kūkiju bibliotēka ir diezgan dīvaina, dēļ tā, ka visi dati tiek kriptēti un glabāti pašos kūkijos. Manuprāt tas ir neefektīvi, jo šie dati tiek sūtīti katrā pieprasījumā, tai skaitā ajax un resursu failiem.

Es parasti daru tā, ka kūkijos glabāju tikai vērtību, pēc kuras var noteikt uz kuru sesiju vai lietotāju tā attiecas. Visi pārējie dati glabājas servera pusē.

 

Nu tas padara bildi skaidrāku..

Kā datus ir "normāli" jāsaglabā servera pusē? Tas pats CodeIgniter tam piedāvā izveidot īpašu datubāzes tabulu, bet vai ar šādu uzdevumu nevajadzētu tikt galā servera RAM atmiņai?

Link to comment
Share on other sites

Kā datus ir "normāli" jāsaglabā servera pusē? Tas pats CodeIgniter tam piedāvā izveidot īpašu datubāzes tabulu, bet vai ar šādu uzdevumu nevajadzētu tikt galā servera RAM atmiņai?

1. Sesijas datus var glabāt db un, ja nav nepieciešama 100% šo datu saglabāšanas drošība, to var darīt memory tabulā.

2. Bez glabāšanas db, tāpat kā citus datus, arī sesijas datus var glabāt kešā (APC, memcahce), tādā veidā nodrošinot tiem ātru piekļuvi pie katra pieprasījuma, kur tie jāapstradā.

Link to comment
Share on other sites

CI ir izvēlējies pieeju, ko reiz aprakstīju šeit:

http://php.lv/f/topic/10717-autorizacijas-drosiba-sesijas/#entry85172

un pat kaut kādu (šobrīd neieteiktu to lietot) piemēru šai pieejai biju uztaisījis:

http://php.lv/f/topic/11116-lietotaju-autentificesana/

 

Plusi ir tādi, ka nav vajadzība sesiju info sinhronizēt starp serveriem vai paredzēt kādu koplietošanas glabātuvi (db/memcache/etc)

Mīnusi - trafiks utt utjp.

Link to comment
Share on other sites

1. Sesijas datus var glabāt db un, ja nav nepieciešama 100% šo datu saglabāšanas drošība, to var darīt memory tabulā.

 

Varētu minēt kādu piemēru, uzbrukuma veidu, kur izpaustos drošības atšķirības starp šīm divām metodēm?

Link to comment
Share on other sites

No drošības (security) viedokļa, manuprāt nav būtiskas atšķirības starp tabulas engine tipu (ja nu vienīgi pats fakts, ka kāda engine varētu piedāvāt papildu slāni - šifrēšanu), taču no uzticamības (reliability) viedokļa Memory tabula avārijas izslēgšanās/restarta gadījumā pazudīs. Atkarībā no tā, vai ir svarīgi, ka sesijas un ar tām saistītie objekti tiek pareizi pabeigti/iznīcināti, tam var nebūt nekādas nozīmes, vai arī tas varētu būt nepieļaujami.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...