[PHP] htmlentities - w którym momencie użyć |
[PHP] htmlentities - w którym momencie użyć |
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ą"
|
|
|
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ł. |
|
|
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%) |
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
|
|
|
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ł. |
|
|
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%) |
@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 ) 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 |
|
|
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 " na &quot;
-------------------- "Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
|
|
|
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 > i to wystarczy, za drugim razem zmienia to w & amp;gt;(bez spacji) i w rezultacie widzisz w oknie >, a podumuwując wypowiedzi kolegów użyj najszybciej jak się da i napewno przed zapytaniem do bazy Edit: poprawiłem nazwę funkcji Edit2: na tym forum też mam drobny problem z htmlentities Ten post edytował netmare 5.04.2008, 21:14:34 |
|
|
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."
|
|
|
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ą"
|
|
|
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 , 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(...) |
|
|
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%) |
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 |
|
|
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 " < > 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ą"
|
|
|
Wersja Lo-Fi | Aktualny czas: 24.04.2024 - 20:34 |