WordPress
Beveiliging in WordPress - Ontsnappen
Zoeken…
Syntaxis
- esc_html (string $ text)
- esc_url (string $ url, array $ protocollen, string $ _context)
- esc_js (string $ text)
- wp_json_encode (gemengde $ data, int $ opties, int $ depth = 512)
- esc_attr (string $ text)
- esc_textarea (string $ text)
Opmerkingen
Bij het ontwikkelen moet altijd rekening worden gehouden met beveiliging. Zonder beveiliging staat een app open voor verschillende aanvallen zoals SQL-injecties, XSS, CSRF, RFI enz. Die tot ernstige problemen kunnen leiden.
Niet-vertrouwde gegevens zijn afkomstig uit vele bronnen (gebruikers, sites van derden, uw eigen database !, ...) en alles moet zowel op invoer als op uitvoer worden gevalideerd. (Bron: WordPress Codex)
De gegevens moeten worden gevalideerd, opgeschoond of ontsnapt, afhankelijk van het gebruik en het doel.
Valideren is ervoor zorgen dat de door u gevraagde gegevens van de gebruiker overeenkomen met wat ze hebben ingediend. (Bron: WordPress Codex)
Sanering is een beetje liberaler van een benadering voor het accepteren van gebruikersgegevens. We kunnen terugvallen op het gebruik van deze methoden wanneer er een bereik van acceptabele invoer is. (Bron: WordPress Codex)
Ontsnappen is het nemen van de gegevens die u mogelijk al hebt en deze helpen beveiligen voordat ze voor de eindgebruiker worden weergegeven. (Bron: WordPress Codex)
Escape-gegevens in HTML-code
esc_html moet altijd worden gebruikt wanneer we gegevens uitvoeren in HTML-code.
<h4><?php echo esc_html( $title ); ?></h4>
ontsnappen aan een url
<a href="<?php echo esc_url( home_url( '/' ) ); ?>">Home</a>
<img src="<?php echo esc_url( $user_picture_url ); ?>" />
Escape-gegevens in js-code
esc_js()
is bedoeld om te worden gebruikt voor inline JS, binnen een esc_js()
.
Gebruik wp_json_encode()
voor gegevens in een <script>
-tag.
<input type="text" onfocus="if( this.value == '<?php echo esc_js( $fields['input_text'] ); ?>' ) { this.value = ''; }" name="name">
wp_json_encode()
codeert een variabele in JSON, met enkele gezondheidscontroles.
Merk op dat wp_json_encode()
de tekenreeksen die de tekenreeksen bevatten automatisch bevat.
<?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>
of
<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>
ontsnappen attributen
<input type="text" value="<?php echo esc_attr($_POST['username']); ?>" />
escape data in textarea
<textarea><?php echo esc_textarea( $text ); ?></textarea>