Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]mysql_real_escape_string czy addslashes
H4eX
post 14.07.2010, 13:37:41
Post #1





Grupa: Zarejestrowani
Postów: 150
Pomógł: 15
Dołączył: 1.07.2010

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


Co jest lepsze do zabezpieczenia tekstu przesyłanego przez POST do bazy?
mysql_real_escape_string czy addslashes a może coś innego?
Go to the top of the page
+Quote Post
vtuner
post 14.07.2010, 13:47:42
Post #2





Grupa: Zarejestrowani
Postów: 220
Pomógł: 10
Dołączył: 23.08.2005
Skąd: Łódź

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


Na pewno lepsze i bezpieczniejsze jest: mysql_real_escape_string
Go to the top of the page
+Quote Post
matiszon
post 14.07.2010, 14:43:24
Post #3





Grupa: Zarejestrowani
Postów: 95
Pomógł: 1
Dołączył: 22.09.2009

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


sorry że się wpierdzielam do tematu ale czy zainkludowanie tego na każdej stronie będzie dobrym zabezpieczeniem?

  1. foreach ($_GET as $key => $val) {
  2. $_GET[$key] = mysql_real_escape_string($val);
  3. }
  4.  
  5. foreach ($_POST as $key => $val) {
  6. $_POST[$key] = mysql_real_escape_string($val);
  7. }


Ten post edytował matiszon 14.07.2010, 14:46:06
Go to the top of the page
+Quote Post
vtuner
post 14.07.2010, 14:48:38
Post #4





Grupa: Zarejestrowani
Postów: 220
Pomógł: 10
Dołączył: 23.08.2005
Skąd: Łódź

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


Nie wiem po co nadpisujesz metody $_POST i $_GET. Poza tym zależy co dalej będziesz z tym robił. Mysql_real_escape_string nadaje się dobrze do bazy danych, ale w innym przypadkach bardzo dobre będzie htmlentities.
Go to the top of the page
+Quote Post
matiszon
post 14.07.2010, 14:52:03
Post #5





Grupa: Zarejestrowani
Postów: 95
Pomógł: 1
Dołączył: 22.09.2009

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


No bo w postach i getach przekazywane sa dane do bazy.
Go to the top of the page
+Quote Post
vtuner
post 14.07.2010, 15:01:15
Post #6





Grupa: Zarejestrowani
Postów: 220
Pomógł: 10
Dołączył: 23.08.2005
Skąd: Łódź

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


Cytat(matiszon @ 14.07.2010, 15:52:03 ) *
No bo w postach i getach przekazywane sa dane do bazy.


Dane do bazy są przekazywane w taki sposób jaki chcesz smile.gif
Go to the top of the page
+Quote Post
matiszon
post 14.07.2010, 15:02:46
Post #7





Grupa: Zarejestrowani
Postów: 95
Pomógł: 1
Dołączył: 22.09.2009

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


No wiem ale czasami coś trafia przez post/get i warto przefiltrować to najpierw pod względem sql injection biggrin.gif
Go to the top of the page
+Quote Post
vtuner
post 14.07.2010, 15:07:03
Post #8





Grupa: Zarejestrowani
Postów: 220
Pomógł: 10
Dołączył: 23.08.2005
Skąd: Łódź

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


Cytat(matiszon @ 14.07.2010, 16:02:46 ) *
No wiem ale czasami coś trafia przez post/get i warto przefiltrować to najpierw pod względem sql injection biggrin.gif


Dobrze, że mi powiedziałeś, bo nie wiedziałem biggrin.gif

Też pytam się po cholerę nadpisujesz $_POST i $_GET, a Ty mówisz, że tak się robi, to próbuje Cię wyprowadzić z tego złego nawyku.

Przechwytujesz tylko te wartości $_POST/$_GET, które potrzebujesz (po co całe?) a następnie filtrujesz i zapisujesz w zmienne $cleanVars (lub podobne, aby wiedzieć, że te zmienne przechowują przefiltrowane wartości) i wstawiasz sobie do bazy.
Go to the top of the page
+Quote Post
matiszon
post 14.07.2010, 15:10:32
Post #9





Grupa: Zarejestrowani
Postów: 95
Pomógł: 1
Dołączył: 22.09.2009

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


Ale mi sie nie chce tongue.gif na każdej stronie dodawać po kilka:

$_POST['var1'] = mysql_real_escape_string($_POST['var1']);
$_POST['var2'] = mysql_real_escape_string($_POST['var2']);
$_POST['var3'] = mysql_real_escape_string($_POST['var3']);

Bo przecież w formularzy wysyłać będę nie kiedy więcej niż jedną wartość.
A tak to dam tamtą pętle w jakimś include które jest na każdej podstronie i po kłopocie biggrin.gif
Go to the top of the page
+Quote Post
vtuner
post 14.07.2010, 15:12:23
Post #10





Grupa: Zarejestrowani
Postów: 220
Pomógł: 10
Dołączył: 23.08.2005
Skąd: Łódź

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


To po co się pytasz na forum, skoro wiesz lepiej?
Go to the top of the page
+Quote Post
zordon
post 14.07.2010, 15:35:18
Post #11





Grupa: Zarejestrowani
Postów: 358
Pomógł: 78
Dołączył: 4.11.2008
Skąd: Kraków

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


jak uważasz, że walenie mysql_escape_string po wszystkich tablicach superglobalnych to odpal sobie taki skrypcik:

  1. <form action="" method="post">
  2. <input type="text" name="a" />
  3. <input type="submit" value="Zapisz" />
  4. </form>
  5. <?php
  6.  
  7. if(!empty($_POST)){
  8. echo 'bez mysql_escape_string: ' . $_POST['a'] . '<br />';
  9. echo 'z mysql_escape_string: ' . mysql_escape_string($_POST['a']) . '<br />';
  10. }


i w formularz wpisz coś z cudzysłowami, np "o'brien". I teraz pomyśl sobie, że wartość z formularza chcesz wyświetlić na ekran, nie zapisywać do bazy ...
ciągle ci się zdaje, że lepiej coś takiego dawać do wszystkiego? Lenistwo nie popłaca ...
Go to the top of the page
+Quote Post
Spawnm
post 14.07.2010, 15:38:41
Post #12





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




zordon - niby jest stripslashes winksmiley.jpg
Co do dawania wszystkiego na starcie w escape to jednak mała pomyłka.
A jak jesteście leniuchy i nie chce wam się wszystkiego z osobna escapować to nauczcie się jakiegoś frameworka lub napiszcie sobie własny smile.gif
Go to the top of the page
+Quote Post
vtuner
post 14.07.2010, 15:42:45
Post #13





Grupa: Zarejestrowani
Postów: 220
Pomógł: 10
Dołączył: 23.08.2005
Skąd: Łódź

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


Cytat(Spawnm @ 14.07.2010, 16:38:41 ) *
Co do dawania wszystkiego na starcie w escape to jednak mała pomyłka.


Mała? Według mnie to głupota.
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: 18.07.2025 - 11:03