Na views-view-fields--magazine--magazine.tpl.php
mojej stronie internetowej jest wiele takich plików szablonów . jak i kiedy powinienem użyć filter_xss () i check_plain (), aby poprawić bezpieczeństwo? na przykład jest to kod:
<div>
<div class="bf-header bf-article-header"><?php print $fields['title']->content; ?></div>
<div class="bf-article-body"><?php print $fields['field_magazine_body']->content;?></div>
<div class="bf-article-image"><?php print $fields['field_magazine_image']->content;?></div>
</div>
<div class="separator article-view-separator"></div>
Jak mogę zastosować w nim te funkcje?
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ńcuchaOdpowiedzi:
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 funkcjafilter_xss()
filtruje ciąg HTML, aby zapobiec lukom w zabezpieczeniach XSS. Robi cztery rzeczy: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). Wtedyfilter_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 icheck_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.
źródło
plain text