SIS 2012/2013 - Primjena YubiKey-a (Tomislav Gec, Ivan Ković)


/ Published in: PHP
Save to your folder(s)

Izvorni kod za web aplikaciju u kojoj smo implementirali validaciju jednokratne zaporke koju generira uređaj YubiKey.


Copy this code and paste it in your HTML
  1. // Sveučilište u Zagrebu, Fakultet organizacije i informatike u Varaždinu
  2. //
  3. // Projekt iz kolegija Sigurnost informacijskih sustava 2012/2013
  4. //
  5. // Tema: Primjena YubiKey-a
  6. //
  7. // Autori: Ivan Ković, Tomislav Gec
  8. //
  9. // Da bi kod radio, potrebna mu je klasa Yubikey.php koja se može naći na donjoj adresi
  10. // URL: https://github.com/rnavarro/yubikey-php/blob/master/Yubikey.php
  11.  
  12. <?php
  13.  
  14. $otp = strtolower ($_POST['otp']);
  15.  
  16. // $public_id se inace uzima iz baze podataka, povezan je s jedinstvenim acccount-om
  17. $public_id = "ccccccbcueie";
  18. // korisnicki podaci se moraju uzimati iz baze podataka
  19. $username = "test";
  20. $password = "test";
  21.  
  22. if($_POST['username'] == $username && $_POST['password'] == $password)
  23. {
  24. if ($public_id == substr($otp, 0, 12))
  25. {
  26. require_once "Yubikey.php";
  27.  
  28. // apiID i kljuc dobiju se na adresi "https://upgrade.yubico.com/getapikey/"
  29. $apiID = 9920;
  30. $signatureKey = "2cbj+NwyBm8YyskUy4PRIzRTZuQ=";
  31.  
  32. $token = new Yubikey($apiID, $signatureKey);
  33.  
  34. // na odgovor servera prilikom provjere ispravnosti OTP-a ceka se do 20 sekundi
  35. $token->setCurlTimeout(20);
  36. // tolerancija na razliku u timestamp-u kada je kreirana lozinka i kada je predana na provjeru
  37. $token->setTimestampTolerance(600);
  38.  
  39.  
  40. if ($token->verify($otp))
  41. {
  42. echo "<p><font color=black font face='sans-serif' size='5pt'>OK! Prijavljeni ste!</p>";
  43. }
  44. else
  45. {
  46. echo "<p><font color=black font face='sans-serif' size='5pt'>Niste se prijavili!</p>";
  47. }
  48.  
  49. echo "\n<p><font color=black font face='sans-serif' size='3pt'>Odgovor servera: ".$token->getLastResponse()."</p>\n";
  50. }
  51. else
  52. {
  53. echo "<p><font color=black font face='sans-serif' size='5pt'>To nije Vaš Yubikey!</p>\n";
  54. }
  55.  
  56. echo "<a href=http://air2012.comule.com/SIS/forma.html><font color=black font face='sans-serif' size='3pt'>Natrag</a>";
  57. echo "</body>\n";
  58. echo "</html>";
  59.  
  60. }
  61.  
  62. else
  63. {
  64. echo "<p><font color=black font face='sans-serif' size='5pt'>Korisni&#269;ki podaci nisu ispravni!</p>\n";
  65. echo "<a href=http://air2012.comule.com/SIS/forma.html><font color=black font face='sans-serif' size='3pt'>Natrag</a>";
  66. echo "</body>\n";
  67. echo "</html>";
  68.  
  69. }
  70.  
  71. ?>

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.