Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Zmiana praw użytkowników
questr
post 12.12.2010, 16:32:20
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 7.04.2010

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


Formularz rejestracyjny na mojej stronie łączy się z bazą danych poprzez stworzone przeze mnie konto w phpmyadmin. To konto ma wyłączone wszystkie opcje jakie tylko były. Chciałbym jakoś zabezpieczyć rejestrację tak aby inni użytkownicy nie mogli podglądać innych danych niż swoje. Póki co każdy może zobaczyć ilu jest userów, jakie mają loginy i hasła zakodowane w md5. Jak mogę jakoś ukryć te dane?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
lord2105
post 12.12.2010, 16:53:54
Post #2





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

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


pokaz skrypt?


--------------------
40% rozwiązań znajduje się tutaj.
59,9% tutaj.

Jeśli pomogłem rozwiązać Twój problem wciśnij
Go to the top of the page
+Quote Post
questr
post 12.12.2010, 17:15:01
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 7.04.2010

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


Skrypt rejestracji:
  1. <?php
  2. include "conn.inc.php";
  3. ?>
  4. <html>
  5. <head>
  6. <title>PHP5, Apache i MySQL</title>
  7. </head>
  8. <body>
  9. <?php
  10. if (isset($_POST['submit']) && $_POST['submit'] == "Zarejestruj") {
  11. if ($_POST['username'] != "" &&
  12. $_POST['password'] != "" &&
  13. $_POST['first_name'] != "" &&
  14. $_POST['last_name'] != "" &&
  15. $_POST['email'] != "") {
  16.  
  17. $query = "SELECT username FROM user_info " .
  18. "WHERE username = '" . $_POST['username'] . "';";
  19. $result = mysql_query($query)
  20.  
  21. if (mysql_num_rows($result) != 0) {
  22. ?>
  23. <p>
  24. <font color="#FF0000"><b>Nazwa użytkownika
  25. <?php echo $_POST['username']; ?> jest już używana. Proszę wybrać
  26. inną!</b></font>
  27. <form action="register.php" method="post">
  28. Nazwa użytkownika: <input type="text" name="username"><br>
  29. Hasło: <input type="password" name="password"
  30. value="<?php echo $_POST['password']; ?>"><br>
  31. Adres email: <input type="text" name="email"
  32. value="<?php echo $_POST['email']; ?>"><br>
  33. Imię: <input type="text" name="first_name"
  34. value="<?php echo $_POST['first_name']; ?>"><br>
  35. Nazwisko: <input type="text" name="last_name"
  36. value="<?php echo $_POST['last_name']; ?>"><br>
  37. Miasto: <input type="text" name="city"
  38. value="<?php echo $_POST['city']; ?>"><br>
  39. Województwo: <input type="text" name="state"
  40. value="<?php echo $_POST['state']; ?>"><br><br>
  41.  
  42. <input type="submit" name="submit" value="Zarejestruj"> &nbsp;
  43. <input type="reset" value="Wyczysć">
  44. </form>
  45. </p>
  46. <?php
  47. } else {
  48. $query = "INSERT INTO user_info (username, password, email, " .
  49. "first_name, last_name, city, state) " .
  50. "VALUES ('" . $_POST['username'] . "', " .
  51. "(PASSWORD('" . $_POST['password'] . "')), '" .
  52. $_POST['email'] . "', '" . $_POST['first_name'] .
  53. "', '" . $_POST['last_name'] . "', '" . $_POST['city'] .
  54. "', '" . $_POST['state'] . "');";
  55. $result = mysql_query($query)
  56. $_SESSION['user_logged'] = $_POST['username'];
  57. $_SESSION['user_password'] = $_POST['password'];
  58. ?>
  59. <p>
  60. Dziękujemy, <?php echo $_POST['first_name'] . " " .
  61. $_POST['last_name']; ?>, za zarejestrowanie się!<br>
  62. <?php
  63. header("Refresh: 5; URL=index.php");
  64. echo "Zakończono proces rejestracji! " .
  65. "Zostaniesz przeniesiony do oryginalnej storny!<br>";
  66. echo "(Jesli przeglądarka nie obsługuje przekierowań, " .
  67. "<a href=\"index.php\">kliknij tutaj</a>)";
  68. die();
  69. }
  70. } else {
  71. ?>
  72. <p>
  73. <font color="#FF0000"><b>Wymagane jest podanie nazwy użytkownika, hasła,
  74. adresu email, imienia i nazwiska!</b></font>
  75. <form action="register.php" method="post">
  76. Nazwa użytkownika: <input type="text" name="username"
  77. value="<?php echo $_POST['username']; ?>"><br>
  78. Hasło: <input type="password" name="password"
  79. value="<?php echo $_POST['password']; ?>"><br>
  80. Adres email: <input type="text" name="email"
  81. value="<?php echo $_POST['email']; ?>"><br>
  82. Imię: <input type="text" name="first_name"
  83. value="<?php echo $_POST['first_name']; ?>"><br>
  84. Nazwisko: <input type="text" name="last_name"
  85. value="<?php echo $_POST['last_name']; ?>"><br>
  86. Miasto: <input type="text" name="city"
  87. value="<?php echo $_POST['city']; ?>"><br>
  88. Województwo: <input type="text" name="state"
  89. value="<?php echo $_POST['state']; ?>"><br>
  90. <br>
  91. <input type="submit" name="submit" value="Zarejestruj"> &nbsp;
  92. <input type="reset" value="Wyczysć">
  93. </form>
  94. </p>
  95. <?php
  96. }
  97. } else {
  98. ?>
  99. <p>
  100. Witamy na stronie rejestracji!<br>
  101. Wymagamy wypełenienia pól nazwy użytkownika, hasła, adresu email,
  102. imienia i nazwiska!
  103. <form action="register.php" method="post">
  104. Nazwa użytkownika: <input type="text" name="username"><br>
  105. Hasło: <input type="password" name="password"><br>
  106. Adres email: <input type="text" name="email"><br>
  107. Imię: <input type="text" name="first_name"><br>
  108. Nazwisko: <input type="text" name="last_name"><br>
  109. Miasto: <input type="text" name="city"><br>
  110. Województwo: <input type="text" name="state"><br>
  111. <br>
  112. <input type="submit" name="submit" value="Zarejestruj"> &nbsp;
  113. <input type="reset" value="Wyczysć">
  114. </form>
  115. </p>
  116. <?php
  117. }
  118. ?>
  119. </body>
  120. </html>



conn.inc
  1. <?php
  2. $conn = mysql_connect("localhost", "user", "haslo")
  3. $db = mysql_select_db("baza")//nazwa bazy danych
  4. ?>

Go to the top of the page
+Quote Post
Mephistofeles
post 12.12.2010, 18:05:14
Post #4





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Cytat
Póki co każdy może zobaczyć ilu jest userów, jakie mają loginy i hasła zakodowane w md5. J

Dopuszczasz bezpośredni dostęp do bazy? Nikt tego nie zobaczy dopóki mu na to (świadomie lub nie) nie pozwolisz.
Można dla każdego tworzyć osobnego użytkownika MySQL, ale to zazwyczaj nie ma sensu i się do niczego nie przydaje.
Go to the top of the page
+Quote Post
CuteOne
post 12.12.2010, 18:12:16
Post #5





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Hee? ale w tym formularzu nie wysyłasz danych z bazy do formularza [i ogólnie do przeglądarki], więc powiedz mi w jaki sposób ktoś miałby wyświetlić dane innych użytkowników?

No chyba, że mowa o zabezpieczeniach i hackowaniu bazy... ale to już inna bajka - którą polecam przeczytać bo twój skrypt to jedna wielka dziura smile.gif
Go to the top of the page
+Quote Post
Mephistofeles
post 12.12.2010, 18:33:21
Post #6





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Skorzystaj z PDO i prepared statements, bo faktycznie nie masz żadnej ochrony przed SQL Injection.
Go to the top of the page
+Quote Post
questr
post 12.12.2010, 22:00:00
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 7.04.2010

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


Do zabezpieczenia tego jeszcze długa droga, ale jeśli ktoś w pliku conn.inc ma bezpośrednio login i hasło do bazy to nie będzie mógł odczytać danych zawartych w bazie? (Wydaje mi się, że drzwi stoją przed nim otworem)
Co do SQL Injection...
Chciałem to później zrobić. Tzn. Najpierw zrobić porządek z bazą i formularzem, a następnie to zabezpieczyć. Oczywiście możecie coś zasugerować do przeczytania jak to dokładnie zrobić tak aby nie było wielu luk smile.gif
Go to the top of the page
+Quote Post
Mephistofeles
post 12.12.2010, 22:11:50
Post #8





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


A niby jak ma uzyskać dostęp do tych danych? Jedynie przez błędy w skrypcie może, czyli od razu zajmij się SQL Injection.
Go to the top of the page
+Quote Post
CuteOne
post 13.12.2010, 11:51:56
Post #9





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


1. Zabezpiecz zapytania używając mysql_real_escape_string() lub jak już ktoś wcześniej napisał prepared statements.
2. Wyświetlanie danych, które pośrednio pochodzą od użytkownika zabezpieczaj używając htmlspecialchars()
3. Odpowiednia konfiguracja php.ini [to zostaw na koniec winksmiley.jpg]
4. Zabezpieczenia sesji [dużo o tym na necie]
5. Zabezpieczenia przed wywołaniem plików bezpośrednio w przeglądarce [np. http://www.example.com/modules/rejestracja...acja_finish.php]

Na necie jest sporo artów opisujących różne techniki zabezpieczeń wystarczy poszukać smile.gif
Go to the top of the page
+Quote Post
questr
post 13.12.2010, 16:33:03
Post #10





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 7.04.2010

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


Dzięki wielkie
W takim układzie zabieram się za zabezpieczanie smile.gif
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:27