web-dev-qa-db-fra.com

Comment puis-je nettoyer les données de réception de ce code

<form id="tellastory" method="post" action="">
    <label for="fullname">Full Name </label>
    <input id="fullname" name="fullname" type="text" maxlength="255" value=""/> 
    <label for="title">Title </label>
    <input id="title" name="title" type="text" maxlength="255" value=""/>
    <label for="title">Message </label>
    <textarea id="editor" name="editor" rows="20" cols="50"></textarea>
    <input type="hidden" name="form_id" value="123456" />       
    <input id="saveForm" type="submit" name="submit" value="submit" />
</form>
<?php
$storyteller_user_id = "3";  //your guest user id here
//$stories_category = "3";  //your stories category id here
$key = "storyteller";

if ($_POST['form_id']=="123456") {
    $my_post = array(); 
    $my_post['post_title'] =$_POST['title'];
    $my_post['post_content'] = $_POST['editor'];
    $my_post['post_status'] = 'publish';
    $my_post['post_author'] = $storyteller_user_id;
    $my_post['post_category'] = array($stories_category);
    $post_Num = wp_insert_post( $my_post );
    add_post_meta($post_Num, $key, $_POST['fullname']);
}
?>
1
cmsdeployed

L’assainissement et l’évasion dépendent toujours beaucoup du contexte et je ne suis pas un expert dans ce domaine. De toute façon, j’ai fait moi-même quelques "recherches", je vais donc essayer de vous fournir des directives générales jusqu’à ce que quelqu'un qui a plus de perspicacité vienne offrir la réponse en profondeur ultime (que je serai impatient de lire aussi.)

L'article du Codex sur La validation des données est un bon débutant. Je crois que esc_html () est la méthode de sortie la plus utilisée.

Il semble également y avoir un nouveau venu dans WP famille échappée dans WordPress 3.1 - esc_textarea () .

WordPress essaie de vous simplifier la vie, comme toujours - alors assurez-vous de vérifier les fonctions spécifiques au contexte existantes telles que sanitize_title () ou sanitize_user () .

Je vous recommande de plonger dans les sources et d’explorer les fonctions de wp-includes/formating.php pour en savoir plus sur les différentes méthodes et leur construction.

Une discussion similaire a récemment eu lieu sur les wp-hackers - à lire absolument:
WP-HACKERS: Sauvegarde des données d'utilisateurs non fiables . J'oserai citer la contribution d'Andrew Nacin à ce sujet:

Généraliser ici: la désinfection doit être effectuée lors de la sauvegarde et la sortie affichée.

Donc, vous voudrez exécuter kses , absint , esc_url_raw , sanitize_text_field , qu'avez-vous, sur enregistrer. Ensuite, utilisez esc_url , esc_html avec texturisation ou tout ce dont vous avez besoin , qu'as-tu, en sortie. Il peut y avoir des cas d'utilisation pour exécuter kses sur l'affichage. Nous le faisons dans certains cas. Mais tant que les données sont stockées en toute sécurité, elles le seront en toute sécurité. (Et si ce n'est pas le cas, vous avez un problème plus important.)

Tu veux toujours plus? ;)
La grotte de code: WordPress Security - un plugin bien fait
Smashing Magazine: Assurer la sécurité des utilisateurs Web en désinfectant les données d'entrée

Passez une journée agréable et sécurisée.

4
Michal Mau