Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [skrypt]Prosty skrypt logowania
m3tt
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 6.01.2011

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


Skrypcik pisany na szybko, powiedzcie co poprawić ew co dodać, żeby kod był bezpieczny.
  1. <?php
  2.  
  3. require_once('.config/db_connect.php');
  4.  
  5. //Łączę się z bazą
  6. Polacz("baza_danych");
  7.  
  8.  
  9. $login = mysql_escape_string($_POST['login']);
  10. $haslo = md5($_POST['haslo']);
  11.  
  12. //Przechowywujemy login w sesji
  13. $_SESSION['login'] = $login;
  14.  
  15.  
  16. if(!isset($_SESSION['zalogowany']))
  17. {
  18. $_SESSION['zalogowany'] = 0;
  19.  
  20. }
  21. //Jeżeli zalogowany
  22. if ($_SESSION["zalogowany"] = $_SESSION['id'])
  23. {
  24. header('Location: ./admin_panel.php');
  25. echo " Zalogowany jako: ".$_SESSION['login']. '<a href="?wyloguj">Wyloguj</a>';
  26.  
  27. if(isset($_GET['wyloguj']))
  28. {
  29. header('Location: ./index.php');
  30. $_SESSION["zalogowany"] = 0;
  31. }
  32.  
  33. }else{
  34. //Jezeli niezalogowany
  35.  
  36.  
  37.  
  38. echo '<div class="logowanie">';
  39. echo '<center><font color="red">'.$komunikat.'</font></center>';
  40. echo '<form method="post">
  41. <div class="logowanie_text">Login:&nbsp; <input type="text" class="logowanie_style" name="login"/></div>
  42.  
  43. <div class="logowanie_text">Hasło&nbsp;<input type="password" class="logowanie_style" name="haslo"/></div>
  44. <br/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  45.  
  46. <input type="submit" class="logowanie_style" value="Zaloguj się :)"/></form>';
  47.  
  48. echo '</div>';
  49.  
  50.  
  51. //Sprawdź czy wysłano dane
  52. if($_SERVER['REQUEST_METHOD'] == 'POST')
  53. {
  54. //Zapytanie do bazy
  55. $sql = mysql_query("SELECT * FROM Users WHERE login='$login' and password='$haslo'");
  56. $sql2 = mysql_query("SELECT * FROM Users WHERE login='$login'");
  57. while($row = mysql_fetch_assoc($sql2))
  58. {
  59. $_SESSION['ranga'] = $row['ranga'];
  60. $_SESSION['id'] = $row['id'];
  61. $_SESSION['last_login'] = $row['last_login'];
  62. }
  63. if(mysql_num_rows($sql))
  64. {
  65. $_SESSION['zalogowany'] = mysql_num_rows($sql);
  66. header('Location: ./admin_panel.php');
  67. }else{
  68. echo '<script>alert("Złe dane")</script>';
  69. }
  70.  
  71. }
  72. }
  73. ?>


Ten post edytował m3tt 6.01.2011, 17:20:08
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
MateuszS
post
Post #2





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Z tego co wiem to na takich skryptach ćwiczą początkujący hakerzy SQL Injection...


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
r4xz
post
Post #3





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


//Jeżeli zalogowany
if ($_SESSION["zalogowany"] = $_SESSION['id'])

hmm, tutaj jest problem ćwiczyć SQL Injection ... winksmiley.jpg

btw. ty chociaż to wrzuciłeś do testów?


--------------------
Go to the top of the page
+Quote Post
webdice
post
Post #4


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(m3tt @ 6.01.2011, 16:52:59 ) *
Skrypcik pisany na szybko, powiedzcie co poprawić ew co dodać, żeby kod był bezpieczny.


Szczerze? Napisz to jeszcze raz.
Go to the top of the page
+Quote Post
m3tt
post
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 6.01.2011

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


No własnie podejrzewałem, że będzie zabugowany. A możecie mi dać kilka wskazówek w pisaniu takich skryptów?
Go to the top of the page
+Quote Post
emajl22
post
Post #6





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

Ostrzeżenie: (10%)
X----


Przede wszystkim naucz się pisać przejrzyściej kod.

  1. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

Co to jest? blinksmiley.gif

  1. require_once('.config/db_connect.php');

Czy aby na pewno to jest dobrze napisane?


--------------------
Go to the top of the page
+Quote Post
ciekawskiii
post
Post #7





Grupa: Zarejestrowani
Postów: 467
Pomógł: 39
Dołączył: 7.11.2010
Skąd: Raz tu, raz tam

Ostrzeżenie: (30%)
XX---


  1. mysql_escape_
  2. string

Plus za checi


--------------------
Go to the top of the page
+Quote Post
m3tt
post
Post #8





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 6.01.2011

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


Cytat(MateuszS @ 6.01.2011, 18:23:16 ) *
Z tego co wiem to na takich skryptach ćwiczą początkujący hakerzy SQL Injection...

Więc podaj mi przykład takiego ataku, bo chciałbym przetestować
Go to the top of the page
+Quote Post
darko
post
Post #9





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Przynajmniej użyj PDO i uporządkuj kod.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Fifi209
post
Post #10





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Jeżeli nie chcesz używać np. PDO tylko funkcji mysql_ to czytaj ich dokumentację.
mysql_escape_string ja wyczytałem coś takiego:
Cytat
This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.


Zamiast tego użyj: mysql_real_escape_string

Co do loginu i traktowania go poprzez w/w funkcję, polecałbym bardziej przefiltrować np.
filter_var ew. zainteresować się wyrażeniami regularnymi PCRE, preg_match

To:
  1. if ($_SESSION["zalogowany"] = $_SESSION['id'])


Zapomniałeś chyba o drugim znaku równości.

Chciałbym również dowiedzieć się jak to ma działać:
  1. header('Location: ./admin_panel.php');
  2. echo " Zalogowany jako: ".$_SESSION['login']. '<a href="?wyloguj">Wyloguj</a>';

Przecież wynik "echo" nikt nie zobaczy.

Oczywiście z tymi przekierowaniami to jeden przykład a wiele błędów takich masz.

Poza tym, po co lecą dwa zapytania do bazy? Wystarczy jedno.



--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
m3tt
post
Post #11





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 6.01.2011

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


Okej, dzieki wielkie. Tak jak pisałem wczesniej, skrypt pisany na szybko, nastepnym razem postaram się poprawić swoje błędy smile.gif
Go to the top of the page
+Quote Post
user767
post
Post #12





Grupa: Zarejestrowani
Postów: 178
Pomógł: 5
Dołączył: 13.09.2010

Ostrzeżenie: (40%)
XX---


to mój skrypt do logowania ze strony nospora, nie obiektowo napisany, do tego najlepiej poczekać na moją inwencję twórczą, aż stworzę kontrolery i opublikuje na stronie nospora w dziale skrypty użytkowników. Oczywiście, skrypt jest bezpieczny, bo nikt nie podłączy się do niego przez inny skrypt i nie wyciągnie danych, ale wymaga przepisania.
Go to the top of the page
+Quote Post

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 Aktualny czas: 21.08.2025 - 06:00