Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z addslashes i stripslashes
Forum PHP.pl > Forum > PHP
Bojakki
Wzialem sie za zabezpieczanie skryptu. Zaczalem wiec zabawe z funkcjami addslashes i stripslashes. Problem jest taki, ze gdy pobieram z tabeli dodany rekord filtrujac go stripslashes (by przy kazdej edycji nie robily mi sie dodatkowe slesze) to czesc pobranego stringu, ktora znajduje sie po cudzyslowie znika (cudzyslow tez). Problem jest tylko wtedy gdy pobieram string by wrzucic go do komorki formularza. gdy chce go wyswielic gdzie indziej na stronie to pokazuje sie caly tak jak powinien.

Istotna czesc kodu:
  1. <?php
  2. $n=stripslashes($a['name']);
  3. echo '<input type="text" name="name" value="'.$n.'"/>';
  4. ?>
mike
Problem tkwi w HTMLu a nie w php.

Masz na przykład kod:
  1. <a href="#" title="Tytuł">link</a>

Wszystko gra, prawda?

A teraz co by było gdyby zamiast Tytuł było Jaki¶"tytuł?
  1. <a href="#" title="Jaki¶"tytuł">link</a>

Widzisz co jest nie tak? Warto¶c dla atrybutu title jest równa Jaki¶ reszta to bł± w kodzie HTML.

Wniosek, nie możesz wstawiać niektórych znaków do kodu HTMLa, których? Znaków zkluczowych dla HTMLa.

Pomoże Ci tu na przykład: htmlspecialchars()
Bojakki
A czy uzywajac htmlspecialchars() moge zrezygnowac z stripslashes() i addslashes() ale by jendoczesnie kod nie byl mniej bezpieczny?
W koncu htmlspecialchars() zamienia cudzyslowia na inne znaki, a bez nich ciezko zrobic sql injection. Tak?
mike
Nie powinienes tego robic.

Zapis do bazy to jedno, a prezentacja to drugie.
Przy zapisie powinno się zawsze korzystać z mysql_escape_string() b±dĽ mysql_real_escape_string() bo to by dane zapisać do bazy.
Nie powinno się ich modyfikować, przecież nigdy nie wiesz co z nimi zrobisz?
Możesz pokazać na stronie, wtedy podczas wy¶wietlania należy użyć htmlspecialchars() ale przecież możesz też kiedy¶ mieć potrzebę zapisać je do pliku .txt wtedy będziesz miał kupę encji zamiast znaków, a to już takie extra nie jest.
Narzędzia powinno się stosować do tego do czego zostały stworzone winksmiley.jpg
Bojakki
Ale ze mnie pustak;)

Mam uzywac htmlspecialchars tylko przy modyfikacji pobranych danych by nie gryzly sie z htmlem:) A do wysylania do bazy lepiej uzyc mysql_real_escape_string() niz addslashes(). Dobrze rozumiem?
mike
Tak.



---update---
Postanowiłem co¶ dopisać, bo post jaki¶ taki krótki.
Co¶
To jest wersja lo-fi głównej zawarto¶ci. Aby zobaczyć pełn± wersję z większ± zawarto¶ci±, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.