Czy check_plain () wystarcza do ponownego wyświetlenia tekstu wprowadzonego przez użytkowników w przeglądarce, czy powinienem nadal filtrować za pomocą filter_xss () ?
Czy check_plain () wystarcza do ponownego wyświetlenia tekstu wprowadzonego przez użytkowników w przeglądarce, czy powinienem nadal filtrować za pomocą filter_xss () ?
Wyobrażam sobie, że pytanie dotyczy użycia check_plain(filter_xss($string))
lub filter_xss(check_plain($string))
.
check_plain()
i filter_xss()
mają dwa różne, przeciwnie, cele:
check_plain()
koduje znaki specjalne w postaci ciągłego tekstu, który jest następnie wyświetlany jako HTML.filter_xss()
filtruje ciąg HTML, aby zapobiec lukom w zabezpieczeniach XSS. W szczególności jego celem jest:
Jeśli używasz check_plain()
, ciąg przekazany do funkcji powinien być używany jako zwykły tekst; w takim przypadku filter_xss()
nie jest to konieczne. Jeśli używasz filter_xss()
, to ciąg znaków przekazywany do funkcji powinien mieć format HTML i check_plain()
nie jest konieczny.
Jeśli pytanie dotyczy użycia check_plain()
i filter_xss()
na różnych częściach tego samego ciągu, to, jak wskazał Greggles w swoim komentarzu, możesz użyć (na przykład) check_plain()
zawartości atrybutów tagu i filter_xss()
całego tagu HTML.