Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> mysql_real_escape_string oraz cudzysłów dla inputa
Vasquez21
post
Post #1





Grupa: Zarejestrowani
Postów: 213
Pomógł: 0
Dołączył: 2.11.2004
Skąd: Jaworzno

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


Witam,

Ostatnio troszkę przerabiałem sobie operacje na bazie i pododawałem przed wrzuceniem wartości do bazy mysql_real_escape_string.
Wszystko jest ok do chwili kiedy chcę podstawić do value w input jakąś wartość z cudzysłowem.
Owa wartość jest obcinana.
Kiedy normalnie wyświetlam wartość pojawia się wszystko poprawnie.

  1. <TD style="text-align:left;"><INPUT name="adres" maxlength="100" size="100" value="<?=$adres['adres'];?>" /></TD>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Nie i jeszcze raz nie.
Nie kumasz co do Ciebie mówię. Jak chcę się zabezpieczyć przed XSS to używam htmlspiecialchars() prze wyświetleniem użytkownikowi.
Mogę też usuwać złe dane przed włożeniem do bazy. Nie ma problemu. Ale do zabezpieczenia przed sqlinjection służy mysql_escape_string a nie filter_var.
Poza tym ja osobiście używam PDO i prepared statetments więc nie mam problemu żadnego problemu.

Poza tym wszystko zależy jak leży.
Wyobraź sobie, że wkładasz do bazy tekst blabla"coswcudzyslowiu"blabla. Teraz robisz wyszukiwanie, ale ktoś szuka właśnie "coswcudzyslowiu".
I co? I nie znajdzie tego u Ciebie, bo ty zamieniasz cudzysłowia na encje. By napisać teraz poprawnie działającą wyszukiwarkę, musisz bawić się w zamienianie w locie.
Inna sytuacja, masz pole w tabeli, w które możesz wstawić z jakiś powodów powiedzmy 3 znaki. Ktoś daje tekst "al i już al mu się nie wstawi, bo ty cudzysłów zamieniłeś na encję, która zjada całe dostępne miejsce.

Już nie wspomnę o tym, że czasami kod html jest jak najbardziej wymagany i ewentualnie co usuwamy, to niebezpieczne kody przy pomocy specjalnych klas.

Lubisz wstawiać wszystko sfiltroane do bazy? Ok, w porządku, wstawiaj, ale nie mów proszę, że to jest panaceum na wszystko, BO NIE JEST.
Poza tym tak czy siak przed wyświetleniem danych userowi należy uzywać htmlspiecialchars, nawet jak ty to już do bazy wkładasz w takiej postaci, bo nigdy nie znasz dnia ani godziny jak ktoś ci zmodyfikuje wpisy w bazie i bedziesz miał duuuzy problem z XSS.
Teraz robiąc encje raz przed włożeniem do bazy, drugi raz po wyjęciu nagle na stronie widać encje a nie znaki.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 10.10.2025 - 23:53