![]() |
![]() ![]() |
![]() |
![]()
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? |
|
|
![]()
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.
|
|
|
![]()
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']); |
|
|
![]()
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 |
|
|
![]()
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 (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 |
|
|
![]()
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;
|
|
|
![]()
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 (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 |
|
|
![]()
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ą ;] |
|
|
![]()
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 |
|
|
![]()
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(...) |
|
|
![]()
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 |
|
|
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 14:43 |