Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]AJAX logowanie, pomoc w zabezpieczeniu kodu
casperii
post 7.10.2018, 10:56:46
Post #1





Grupa: Zarejestrowani
Postów: 680
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


Witam.
postanowiłem napisać logowanie opartym o jquery i teraz się zastanawiam czy to będzie dobry pomysł pod względem bezpieczeństwa.

php:
  1. /*Funkcja zapisująca ciasteczka */
  2. function docookie($setuid, $setusername) {
  3. $info = base64_encode("$setuid:$setusername");
  4. setcookie("user","$info",time()+3600);
  5. return $info;
  6. }
  7.  
  8.  
  9. $user = $_GET['Username'];
  10. $password = trim($_GET['Password']);
  11.  
  12. $query = $pdo->prepare("SELECT `user`, `password`, `pass_pass`, `id_user` FROM `users` WHERE `user` = :user AND `password` = :password LIMIT 1");
  13. $query->bindValue(':user', $user, PDO::PARAM_STR);
  14. $query->bindValue(':password', SafePassword($password), PDO::PARAM_STR);
  15.  
  16. $query->execute();
  17. $fetch = $query->fetch();
  18.  
  19. if(empty($user)){
  20. $status = "error";
  21. $message = "".LANG_AJAX_LOGIN_NIEPODANO.".";
  22. }elseif(!is_array($fetch)){
  23. $status = "error";
  24. $message = ''.LANG_AJAX_LOGIN_NIEMA.'.';
  25. }elseif(empty($password)){
  26. $status = "error";
  27. $message = "".LANG_AJAX_HASLO_NIEPODANO.".";
  28. }else{
  29.  
  30. mt_srand ((double)microtime()*1000000);
  31. $maxran = 1000000;
  32. $random_num = mt_rand(0, $maxran);
  33.  
  34.  
  35. $datekey = date("F j");
  36. $rcode = hexdec(md5($_SERVER['HTTP_USER_AGENT'] . $random_num . $datekey));
  37. $code = substr($rcode, 2, 6);
  38.  
  39. docookie($fetch['id_user'], $user);
  40.  
  41. $status = "success";
  42. $message = 'Zalogowano poprawnie.'.$code;
  43. }


JS:

  1. var SignIn = function() {
  2. $('#LoginButton,#LoginButtonTop').on('click', function (){
  3. var form = $('#login').serialize(),
  4. responseMsg = $('#messageLogin,#messageLoginTop');
  5. responseMsg.hide().addClass('response-waiting').text('czekaj...').fadeIn(200);
  6.  
  7. $.ajax({
  8. type: 'GET',
  9. url: "/ajax.php?p=login",
  10. data: form,
  11. processData: false,
  12. contentType: false,
  13. success: function(data){
  14. var responseData = jQuery.parseJSON(data),
  15. klass = '';
  16. switch(responseData.status){
  17. case 'error':
  18. klass = 'response-error';
  19. break;
  20.  
  21. case 'success':
  22. klass = 'response-success';
  23. break;
  24. }
  25.  
  26. responseMsg.fadeOut(200,function(){
  27. $(this).removeClass('response-waiting').addClass(klass).html(responseData.message).fadeIn(200,function(){
  28.  
  29. if(responseData.status == 'error'){
  30. setTimeout(function(){
  31. responseMsg.fadeOut(200,function(){
  32. $(this).removeClass(klass);
  33. });
  34. },3000);
  35.  
  36. }else { setTimeout('go_to_private_page()', 3000); }
  37.  
  38.  
  39. });
  40. });
  41. }
  42. });
  43. return false;
  44. });
  45. }
Go to the top of the page
+Quote Post

Posty w temacie
- casperii   [PHP]AJAX logowanie   7.10.2018, 10:56:46
- - viking   Czemu nie używasz password_hash i verify dla haseł...   7.10.2018, 11:37:20
- - casperii   Po to tu napisałem by otrzymać pomoc Jak już wsp...   7.10.2018, 11:52:55
- - viking   Zobacz w dokumentacji. Do jquery i kodu js dostęp ...   7.10.2018, 11:57:58
- - casperii   wcześniej kodowane hasło miałem za pomocą: [PHP]...   7.10.2018, 12:07:40
- - viking   Od 7.2 algorytmem jest argon2i. Funkcja safepasswo...   7.10.2018, 12:14:59
- - casperii   nie bardzo wiem jak to teraz ugryźć, bo przy zapis...   7.10.2018, 12:32:37
- - viking   Przy zapisie do bazy hash a potem wyciągasz użytko...   7.10.2018, 12:39:28
- - casperii   oł patrz na to: Call to undefined function passwor...   7.10.2018, 12:41:02
- - viking   No to najwyższa pora zmienić hosting bo nawet na t...   7.10.2018, 13:22:02
- - woxala123   https://stackoverflow.com/questions/1461255...tica...   7.10.2018, 18:00:37
- - casperii   @woxala123 tak na przyszłość nie podawaj linków , ...   7.10.2018, 23:26:42
- - nospor   Nie bardzo rozumiem po co chcesz jakies info przek...   8.10.2018, 09:56:16
- - borabora   na froncie powinieneś mieć coś takiego [HTML] pobi...   8.10.2018, 10:22:11
- - viking   KodDeprecation Notice: The jqXHR.success(...   8.10.2018, 11:04:38
- - casperii   @borabora , @viking a to nie jest tak , że success...   8.10.2018, 20:35:23
- - borabora   SPA - single page application. Czyli "cały...   9.10.2018, 15:07:55
- - casperii   No dobra czyli w efekcie końcowym ma być tak: [H...   10.10.2018, 20:12:46
- - nospor   Z takich pierdow ale az klujacych w oczy nie: kl...   10.10.2018, 20:50:44
- - viking   I nie zastosowałeś done/fail tylko usunięte succes...   11.10.2018, 06:42:43
- - casperii   @nospor SignIn poprawiony na signIn to: [HTML...   11.10.2018, 19:28:30
- - nospor   To nazwij to np. messageClass tylko na jadro linuk...   11.10.2018, 19:51:09
- - casperii   @viking fail() / done() jest w nowszej wersji jQue...   14.10.2018, 20:06:22


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.04.2024 - 10:32