Najpierw przeczytaj o nich w interfejsie API Drupal:
Tak więc check_plain()
koduje znaki specjalne o specjalnym znaczeniu w HTML (takie jak <
i &
) w jednostkach czystego tekstu (tj. <
I &
odpowiednio), które sprawią, że będą one renderowane dosłownie (nie interpretowane jako HTML), gdy ten ciąg znaków zostanie następnie wyświetlony jako część strony z Znaczniki HTML. Ta funkcja filter_xss()
filtruje ciąg HTML, aby zapobiec lukom w zabezpieczeniach XSS. Robi cztery rzeczy:
- Usuwanie postaci i konstrukcji, które mogą oszukać przeglądarki
- Upewnij się, że wszystkie jednostki HTML są poprawnie sformułowane
- Upewnij się, że wszystkie tagi i atrybuty HTML są poprawnie sformułowane
- Upewnienie się, że żadne tagi HTML nie zawierają adresów URL z niedozwolonym protokołem (np. Javascript :)
Obie funkcje służą do odkażania danych od użytkowników, aby upewnić się, że wstrzyknięcie przez użytkownika zostanie zneutralizowane przed wyrenderowaniem danych w witrynie.
Nigdy nie przepuszczasz tego samego ciągu przez oba .
Jeśli użyjesz, check_plain()
ciąg przekazany do funkcji powinien być używany jako zwykły tekst (nie HTML). Wtedy filter_xss()
nie jest potrzebne, ponieważ check_plain()
zawsze spowoduje, że ciąg będzie zwykłym tekstem.
Jeśli użyjesz filter_xss()
, to ciąg przekazany do funkcji ma być HTMLem i check_plain()
zepsuje go.
Kiedy patrzę na szablon, którego używasz jako przykładu, wydaje mi się, że wszystkie trzy pola, które zostały przekazane, print()
pochodzą z treści, która jest już oczyszczona i nie wymagają już żadnych warunków sanitarnych.
Jeśli jednak utworzysz własny moduł, który zbiera dane wejściowe od użytkownika bez przepuszczania go przez „bezpieczny” filtr tekstowy, taki jak „Filtrowany HTML” lub „Zwykły”, musisz użyć tych funkcji do celów sanitarnych.
filter_xss()
gdy chcesz odfiltrować XSS przed potencjalnie niebezpieczną zawartością (tj. Treści od niezaufanego użytkownika) icheck_plain()
gdy chcesz uciec od znaków specjalnych HTML z łańcucha