Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Access][MySQL][PHP] Zabezpieczenia
-rafor4-
post
Post #1





Goście







Siemka. Mam pytanie. Czy dobrze zabezpieczyłem skrypt rejestracji przed ewentualnymi atakami ?

  1. if ($_POST['klasa']==1){
  2. if (empty($_POST['login']) || empty ($_POST['klasa']) || empty($_POST['haslo']) || empty($_POST['email'])) echo 'Wypełnij wszystkie pola!';
  3. else
  4. {
  5. $login = htmlspecialchars(strip_tags($_POST['login']));
  6. $login2 = htmlspecialchars(strip_tags($_POST['login']));
  7. $klasa = htmlspecialchars(strip_tags($_POST['klasa']));
  8. $haslo = htmlspecialchars(strip_tags($_POST['haslo']));
  9. $email = htmlspecialchars(strip_tags($_POST['email']));
  10. if (!ctype_alnum($login) ) echo 'To nie jest poprawna nazwa użytkownika!';
  11. else if (! filter_var($email,FILTER_VALIDATE_EMAIL) ) echo 'To nie jest poprawny email!';
  12. else
  13. {
  14. if (row("SELECT id FROM users WHERE login = mysql_real_escape_string($login) OR email='.mysql_real_escape_string($email).'") ) echo 'Nazwa użytkownika/email jest już zajęta';
  15. else
  16. {
  17. addslashes(mysql_query("INSERT into users (login,haslo,email,klasa) VALUES ('$login',md5('$haslo'),'$email','$klasa')"));
  18. addslashes(mysql_query("INSERT into statystyki (login2,sila,szybkosc,inteligencja,zrecznosc,wytrzymalosc,uniki,obrazenia) VALUES ('$login2','9','5','6','4','7','4','25')"));
  19. echo 'Konto zostało założone!<br>';
  20. echo '<br>Zostałeś Wojownikiem!';
  21. echo '<br><a href="index.php">-Powrot</a><br> ';
  22. }
  23. }
  24. }
  25. }


Kiedy przy dodawaniu zmiennych do bazy tutaj:
  1. addslashes(mysql_query("INSERT into users (login,haslo,email,klasa) VALUES ('$login',md5('$haslo'),'$email','$klasa')"));


zamiast '$login' wpisuję '.mysql_real_escape_string($login).' wtedy do bazy zapisuje się np. .mysql_real_escape_string(maselko492). Nie wiem czy jest to potrzebne, gdy już wcześniej zmienną login przefiltrowałem na obecność kodu php i html, jednak proszę o poradę wink.gif
Go to the top of the page
+Quote Post
CuteOne
post
Post #2





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

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


1. addslashes(mysql_query( a co to za dziwadło... dodajesz slashe do TRUE/FALSE ?

  1.  
  2. $login = mysql_real_escape_string($login);
  3. $email = mysql_real_escape_string($email);
  4. $klasa = mysql_real_escape_string($klasa);
  5.  
  6. mysql_query("INSERT INTO users (login,haslo,email,klasa) VALUES ('$login',md5('$haslo'),'$email','$klasa')");


2. SELECT id FROM users WHERE login = mysql_real_escape_string($login) jest kodem PHP nie mysql, więc używaj go tak jak w pkt 1

3. Usuwanie html itp. używa się przy wyświetlaniu danych
Go to the top of the page
+Quote Post
-rafor4-
post
Post #3





Goście







  1. if ($_POST['klasa']==1){
  2. if (empty($_POST['login']) || empty ($_POST['klasa']) || empty($_POST['haslo']) || empty($_POST['email'])) echo 'Wypełnij wszystkie pola!';
  3. else
  4. {
  5. $login = mysql_real_escape_string($login);
  6. $klasa = mysql_real_escape_string($klasa);
  7. $haslo = htmlspecialchars(strip_tags($_POST['haslo']));
  8. $email = mysql_real_escape_string($email);
  9. if (!ctype_alnum($login) ) echo 'To nie jest poprawna nazwa użytkownika!';
  10. else if (! filter_var($email,FILTER_VALIDATE_EMAIL) ) echo 'To nie jest poprawny email!';
  11. else
  12. {
  13. if (row("SELECT id FROM users WHERE login = mysql_real_escape_string($login) OR email='.mysql_real_escape_string($email).'") ) echo 'Nazwa użytkownika/email jest już zajęta';
  14. else
  15. {
  16. mysql_query("INSERT into users (login,haslo,email,klasa) VALUES ('$login',md5('$haslo'),'$email','$klasa')"));
  17. mysql_query("INSERT into statystyki (login2,sila,szybkosc,inteligencja,zrecznosc,wytrzymalosc,uniki,obrazenia) VALUES ('$login2','9','5','6','4','7','4','25')"));
  18. echo 'Konto zostało założone!<br>';
  19. echo '<br>Zostałeś Wojownikiem!';
  20. echo '<br><a href="index.php">-Powrot</a><br> ';
  21. }
  22. }
  23. }
  24. }


Czyli jak jest tak to skrypt jest zabezpieczony tak ? Nie za bardzo zrozumiałem to 2.
Go to the top of the page
+Quote Post
-rafor4-
post
Post #4





Goście







Sory, że 2 post ale nie moge edytować. Czytałem, że addslashes() powinno się dawać przed dodawaniem jakiś rekordów do bazy, tylko nie miałem pojęcia jak to użyć ;p
Do tego $haslo = htmlspecialchars(strip_tags($_POST['haslo']));
też ma być mysql_real_escape_string($_POST['haslo'])); ?
Go to the top of the page
+Quote Post
-rafor4-
post
Post #5





Goście







Czyli jeśli jest np. zmienna:
$gracz = mysql_query("SELECT * FROM users WHERE id=$_SESSION[id]");
Nie trzeba stosować żadnych zabezpieczeń ? Tzn. czy są one potrzebne, gdy wywołujemy dane z bazy.
Go to the top of the page
+Quote Post
-rafor4-
post
Post #6





Goście







Refresh
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: 20.08.2025 - 17:51