WordPress
Bezpieczeństwo w WordPress - ucieczka
Szukaj…
Składnia
- esc_html (ciąg $ tekst)
- esc_url (string $ url, array $ protocols, string $ _context)
- esc_js (ciąg $ tekst)
- wp_json_encode (mieszane $ dane, int $ opcje, int $ głębokość = 512)
- esc_attr (string $ text)
- esc_textarea (string $ text)
Uwagi
Podczas opracowywania należy zawsze pamiętać o bezpieczeństwie. Bez zabezpieczeń aplikacja jest otwarta na różne ataki, takie jak SQL Injections, XSS, CSRF, RFI itp., Które mogą prowadzić do poważnych problemów.
Niezaufane dane pochodzą z wielu źródeł (użytkownicy, strony osób trzecich, twoja własna baza danych !, ...) i wszystkie muszą zostać zweryfikowane zarówno na wejściu, jak i na wyjściu. (Źródło: WordPress Codex)
Dane powinny być zatwierdzone, zdezynfekowane lub usunięte w zależności od zastosowania i celu.
Aby zweryfikować, upewnij się, że dane, o które prosiłeś użytkownika, są zgodne z przesłanymi przez Ciebie danymi. (Źródło: WordPress Codex)
Odkażanie jest nieco bardziej liberalne w podejściu do akceptowania danych użytkownika. Możemy powrócić do korzystania z tych metod, jeśli istnieje zakres dopuszczalnych danych wejściowych. (Źródło: WordPress Codex)
Aby uciec, należy wziąć dane, które już masz, i pomóc zabezpieczyć je przed renderowaniem dla użytkownika końcowego. (Źródło: WordPress Codex)
dane ucieczki w kodzie HTML
esc_html powinien być używany za każdym razem, gdy wysyłamy dane do kodu HTML.
<h4><?php echo esc_html( $title ); ?></h4>
uciec z adresu URL
<a href="<?php echo esc_url( home_url( '/' ) ); ?>">Home</a>
<img src="<?php echo esc_url( $user_picture_url ); ?>" />
dane ucieczki w kodzie js
esc_js()
jest przeznaczona do stosowania w wbudowanym JS wewnątrz atrybutu tagu.
W przypadku danych wewnątrz znacznika <script>
użyj wp_json_encode()
.
<input type="text" onfocus="if( this.value == '<?php echo esc_js( $fields['input_text'] ); ?>' ) { this.value = ''; }" name="name">
wp_json_encode()
koduje zmienną do JSON, z pewnymi sprawdzeniami wp_json_encode()
.
Zauważ, że wp_json_encode()
zawiera cudzysłowy rozdzielające ciąg.
<?php
$book = array(
"title" => "JavaScript: The Definitive Guide",
"author" => "Stack Overflow",
);
?>
<script type="text/javascript">
var book = <?php echo wp_json_encode($book) ?>;
/* var book = {
"title": "Security in WordPress",
"author" => "Stack Overflow",
}; */
</script>
lub
<script type="text/javascript">
var title = <?php echo wp_json_encode( $title ); ?>;
var content = <?php echo wp_json_encode( $content ); ?>;
var comment_count = <?php echo wp_json_encode( $comment_count ); ?>;
</script>
atrybuty ucieczki
<input type="text" value="<?php echo esc_attr($_POST['username']); ?>" />
dane ucieczki w polu tekstowym
<textarea><?php echo esc_textarea( $text ); ?></textarea>