Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] htmlentities - w którym momencie użyć
MalyKazio
post
Post #1





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Witam,

Mam może banalne pytanie. Wiem do czego służy ta funkcja, jednak mam wątpliwości w którym miejscu użyć htmlentities? Czy przy wyświetlaniu danych wpisanych przez użytkownika, czy też przed dodaniem ich do bazy danych? Mam włączone magic quotes. Ktoś wpisuje w formularzu tekst, który jest dodawany do bazy. Czy przepuścić go przez htmlentites przed dodaniem do bazy, czy też dopiero po wyciągnięciu z bazy, przed późniejszym wyświetleniem na stronie?
Go to the top of the page
+Quote Post
help_mee
post
Post #2





Grupa: Zarejestrowani
Postów: 244
Pomógł: 21
Dołączył: 10.02.2008
Skąd: Załęcze Wielkie

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


moim zdaniem lepiej przed zapytaniem aby nie psuło go.
Go to the top of the page
+Quote Post
pyro
post
Post #3





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(help_mee @ 5.04.2008, 18:22:58 ) *
moim zdaniem lepiej przed zapytaniem aby nie psuło go.


psuło? haha

htmlentites sluzy glownie do ochrony przed XSS (i podonych do niego atakow), a najlepiej dawac najszybciej jak mozna, najlepiej od razu po daniu przez uzytkownika czyli np.:

$cos = htmlentities($_GET['cos']);
Go to the top of the page
+Quote Post
help_mee
post
Post #4





Grupa: Zarejestrowani
Postów: 244
Pomógł: 21
Dołączył: 10.02.2008
Skąd: Załęcze Wielkie

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


psuło czyli nie rozpier&@** ZAPYTANIA DO np. MYSQL i bazy oto biega chłopie
lol
Go to the top of the page
+Quote Post
marcio
post
Post #5





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


@help_me lol to chyba ty htmlentites to mniej wiecej to samo co htmlspecialchars() i sluzy przed Xss/html injection(mowie ze to to samo (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ) a nie zdaje mi sie zeby mialo to cos wspolnego z zapytaniem

P.S jak co moze sluzyc do odczytywania danych z bazy

Ten post edytował marcio 5.04.2008, 18:17:24
Go to the top of the page
+Quote Post
MalyKazio
post
Post #6





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Od bezpieczeństwa zapytań jest z tego co wiem m.in magic quotes i addslashes, htmlentities ma mniej więcej zapobiec psuciu wyświelanego kodu html na stronie, czyli np. zamykaniu cudzysłowów w <img src="obraz.jpg" title="Opis podany "zdzicha" uzytkownika zawierający cudzysłów">. Stąd moje pytanie w którym momencie to stosować. Druga kwestia: Jak rozwiązać problem, gdy umożliwia się użytkownikom edycję wprowadzonego tekstu, np. opisu zdjęcia? Kiedy przetrawię tekst za pomocą htmlentites przez dodaniem do bazy danych i potem przed wyświetleniem jako VALUE dla pola input (w formularzu do edycji) to wszystko szlag trafia i zamienia &quot; na &amp;quot;
Go to the top of the page
+Quote Post
netmare
post
Post #7





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

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


no bo dublujesz htmlentities()
za pierwszym razem już wystarczy i zmienia np > w &gt;
i to wystarczy, za drugim razem zmienia to w & amp;gt;(bez spacji) i w rezultacie widzisz w oknie &gt;,
a podumuwując wypowiedzi kolegów użyj najszybciej jak się da i napewno przed zapytaniem do bazy

Edit: poprawiłem nazwę funkcji (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Edit2: na tym forum też mam drobny problem z htmlentities (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował netmare 5.04.2008, 21:14:34
Go to the top of the page
+Quote Post
Kicok
post
Post #8





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Ja mam odmienne stanowisko: zabezpieczać dopiero wtedy, kiedy jest to wymagane. Czyli mysql_escape_string" title="Zobacz w manualu PHP" target="_manual tuż przed wstawieniem zmiennej do zapytania, a htmlspecialchars" title="Zobacz w manualu PHP" target="_manual/htmlentities" title="Zobacz w manualu PHP" target="_manual tuż przed wysłaniem danych do przeglądarki.

W obu przypadkach będziesz miał bezpieczny skrypt, więc stosuj tą metodę którą uważasz za wygodniejszą ;]
Go to the top of the page
+Quote Post
MalyKazio
post
Post #9





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Dzięki za wyjaśnienia. Tak mi się wydawało, że htmlentities przed zapytaniem robiłoby zbędnym addslashes. Z drugiej jednak strony np. w PhpBB jest htmlspecialchars stosowane przed dodaniem do bazy, ale z tego co słyszałem to forum nie jest najlepszym wzorem do naśladowania.
Czy jednak trzeba stosowac mysql_escape_string przy magic_quotes lub addslashes?

Ten post edytował MalyKazio 5.04.2008, 21:23:23
Go to the top of the page
+Quote Post
netmare
post
Post #10





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

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


kolega kicok to stray rutyniarz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) , i to co mówi ma sens, ale musisz pamiętać o tym że w każdym pliku php w którym będziesz to wyświetlał musisz użyć tej konwersji, a ja po prostu napewno bym gdzieś o tym zapomniał, co do magic quotes to warto moim zdaniem się nimi nie sugerować, bo kiedyś zmienisz hosting i się okaże że mają wyłączone magic quotes... a od magic quotes się odchodzi o ile mi wiadomo.

pomyśl o czymś jak if(!get_magic_quotes_runtime) addslashes(...)
Go to the top of the page
+Quote Post
marcio
post
Post #11





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


Cytat
Dzięki za wyjaśnienia. Tak mi się wydawało, że htmlentities przed zapytaniem robiłoby zbędnym addslashes

Nie rozumiem cie ogolnie ani htmlspecialchars ani htmlentites nie dodaja slashy
Go to the top of the page
+Quote Post
MalyKazio
post
Post #12





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Chodziło mi o to, że jeśli za pomocą htmlentities zamienię " < > na &quot; &lt; &gt przed wysłaniem zapytania do bazy danych to zapytanie się wykrzaczy albo zostanie potraktowane jako zwykły tekst, a addslashes i tak nie doda przed takim czymś \, więc wychodzi na to że jest zbędne.
Mniej więcej już wiem o co chodzi. Użyję tego tak:
1. addslashes przed dodaniem do bazy
2. htmlentites po pobraniu z bazy i przed wyświetleniem
Go to the top of the page
+Quote Post

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: 5.10.2025 - 14:43