Jump to content

PHP Tokens


piekuns18
 Share

Recommended Posts

Sveiki.

Mēģinu uztaisīt token baset authentification.

Man ir jautājums.

Es pie log in uzģenerēju token, kuru lieku klāt katram linkam vai arī kā hidden element iekš formas.

Dažos tutorial esmu redzējis, ka token ieliek iekš sessijas un tad pie request pārbauda vai request token sakrīt ar sessijas token.

Es tik nesaprotu ar ko tas atšķiras, ja es pie log in iekš sesijas ielieku authentificated = true un uz katru request pārbaudu. Vēl protams es varu nelikt iekš sessijas, bet tad ar to token varēs piekļūt pie pie kāda resursa no jebkura kompja jebkurā laikā.

Varbū kāds var ieteikt kā īsti uztaisīt serverpuses token validāciju? Mož kādam ir kāds piemērs. Es neko sakarīgu(vismaz man tā liekas) nevaru atrast.

Link to comment
Share on other sites

Tokenus lieto gadījumos kad nav sessija izveidojama (API pieprasījumi). 

 

Tie tokeni ko liek pie formas un glabā sesijā ir CSRF tokeni, un tiek pārbaidīti piemēram pie formas submitošanas, lai zinātu ka formu submitojis tieši tas klients kam tokens izsniegts.

 

Kam tev īsti vajadzīga token autorizācija un kāpēc nepietiek ar sessiju? 

Link to comment
Share on other sites

piekuns18

Hmmm bet kāda jēga sesijā pārbaudīt tokenu, ja tur pie login var ielikt iekš sesijas login=true

un tad pārbaudīt šo sessijas mainīgo un pie logout to vai nu false vai unset. Kāda jēga likt to token pie formas? ķipa jo sesiju var nospert, ja? Bet token vai tad nevar, ja viņu vieno klāt pie formas?

Link to comment
Share on other sites

palasi par CSRF. 

 

 

Cross-Site Request Forgery (CSRF) is a type of attack that occurs when a malicious Web site, email, blog, instant message, or program causes a user's Web browser to perform an unwanted action on a trusted site for which the user is currently authenticated.
Link to comment
Share on other sites

tokenam ir jābūt nevis true/false, bet kaut kam neuzminam un piesietam konkrētajam jūzerim

 

piemēram:
 

$token = sha1( $_SERVER['REMOTE_ADDR'].$user_id.microtime().$_SERVER['USER_AGENT].'garš garš strings, ko nekad neviens neuzminē$ xoxoxo123!!!');

tad šo tokenu kopā ar user_id saglabā sessiju tabulā savā db un padod jūzerim caur setcookie('token', $token);

katrā pieprasījumā pārbaudi, vai tas tokens, kas nāk caur kukiju atbilst ierakstam db, no turienes dabū user_id un zini, ja jūzeris ir autentificējies.

 

Pie logout izdzēs ierakstu no sesiju tabulas..

 

Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...