WordPress
Säkerhet i WordPress - Escape
Sök…
Syntax
- esc_html (sträng $ text)
- esc_url (string $ url, array $ protokoll, string $ _context)
- esc_js (sträng $ text)
- wp_json_encode (blandad $ data, int $ alternativ, int $ djup = 512)
- esc_attr (sträng $ text)
- esc_textarea (sträng $ text)
Anmärkningar
Säkerhet bör alltid vara i åtanke när man utvecklar. Utan säkerhet är en app öppen för olika attacker som SQL Injektioner, XSS, CSRF, RFI etc som kan leda till allvarliga problem.
Otillförlitliga data kommer från många källor (användare, tredjepartswebbplatser, din egen databas!, ...) och allt måste valideras både på input och output. (Källa: WordPress Codex)
Uppgifterna ska valideras, saneras eller undgås beroende på användning och syfte.
Att validera är att se till att de uppgifter du har begärt av användaren matchar vad de har skickat in. (Källa: WordPress Codex)
Sanering är lite mer liberal när det gäller att acceptera användardata. Vi kan falla tillbaka till att använda dessa metoder när det finns en rad acceptabla input. (Källa: WordPress Codex)
Att fly är att ta de data du redan har och hjälpa till att säkra dem innan du lämnar dem till slutanvändaren. (Källa: WordPress Codex)
undgå data i HTML-kod
esc_html ska användas när vi skickar in data i HTML-kod.
<h4><?php echo esc_html( $title ); ?></h4>
undgå en url
<a href="<?php echo esc_url( home_url( '/' ) ); ?>">Home</a>
<img src="<?php echo esc_url( $user_picture_url ); ?>" />
flyktdata i js-kod
esc_js()
är avsett att användas för inline JS, inuti ett tagattribut.
För data i en <script>
wp_json_encode()
använd wp_json_encode()
.
<input type="text" onfocus="if( this.value == '<?php echo esc_js( $fields['input_text'] ); ?>' ) { this.value = ''; }" name="name">
wp_json_encode()
kodar en variabel till JSON, med några sanityskontroller.
Observera att wp_json_encode()
inkluderar strängavgränsande citat automatiskt.
<?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>
eller
<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>
flyktattribut
<input type="text" value="<?php echo esc_attr($_POST['username']); ?>" />
rymdata i textområdet
<textarea><?php echo esc_textarea( $text ); ?></textarea>