Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] htmlentities - w którym momencie użyć
MalyKazio
post 5.04.2008, 17:16:55
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?


--------------------
"Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
Go to the top of the page
+Quote Post
help_mee
post 5.04.2008, 17:22:58
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.


--------------------
Amentis dolet!
Deus et patria!
» Pomogłem? Kliknij Pomógł.
Go to the top of the page
+Quote Post
pyro
post 5.04.2008, 17:45:48
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']);


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
help_mee
post 5.04.2008, 17:49:55
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


--------------------
Amentis dolet!
Deus et patria!
» Pomogłem? Kliknij Pomógł.
Go to the top of the page
+Quote Post
marcio
post 5.04.2008, 18:15:17
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 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


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
MalyKazio
post 5.04.2008, 21:05:11
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;


--------------------
"Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
Go to the top of the page
+Quote Post
netmare
post 5.04.2008, 21:09:40
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 winksmiley.jpg
Edit2: na tym forum też mam drobny problem z htmlentities winksmiley.jpg

Ten post edytował netmare 5.04.2008, 21:14:34
Go to the top of the page
+Quote Post
Kicok
post 5.04.2008, 21:19:37
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ą ;]


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
MalyKazio
post 5.04.2008, 21:20:17
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


--------------------
"Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
Go to the top of the page
+Quote Post
netmare
post 5.04.2008, 21:36:46
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 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 5.04.2008, 22:04:01
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


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
MalyKazio
post 6.04.2008, 09:18:45
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


--------------------
"Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
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: 24.04.2024 - 20:34