39. Considérations de Sécurité | Field Forge - Champs personnalisés, conçus pour la vitesse
Télécharger Se connecter

39. Considérations de Sécurité

Meilleures pratiques pour sécuriser les données de champs personnalisés dans Field Forge.

Échappement de Sortie

Échappez toujours les valeurs de champ avant la sortie. Field Forge n’échappe pas automatiquement les valeurs retournées par get_field().

php
// Text fields -- use esc_html()
echo esc_html( get_field( 'headline' ) );

// URLs -- use esc_url()
echo '<a href="' . esc_url( get_field( 'link' ) ) . '">Click</a>';

// HTML attributes -- use esc_attr()
echo '<div class="' . esc_attr( get_field( 'css_class' ) ) . '">';

// WYSIWYG fields are already sanitized via wp_kses_post()
// Safe to output directly
echo get_field( 'body_content' );

Validation des Entrées

Field Forge valide les valeurs lors de l’enregistrement. Les champs de texte vérifient maxlength, les champs numériques vérifient min/max/step, les champs email valident le format. Lors de l’enregistrement par programme, assurez-vous que vos valeurs sont valides :

php
// Sanitize before update_field()
$email = sanitize_email( $_POST['user_email'] );
if ( is_email( $email ) ) {
    update_field( 'contact_email', $email, $post_id );
}

$price = floatval( $_POST['price'] );
if ( $price >= 0 ) {
    update_field( 'price', $price, $post_id );
}

Sécurité de l’API REST

Les points de terminaison de mutation (POST, PUT, DELETE) nécessitent la capacité manage_options. Les points de terminaison de lecture (GET) nécessitent un utilisateur authentifié avec des capacités de niveau éditeur (read_private_posts ou edit_posts) ; le point de terminaison des valeurs par publication (GET /fields/{post_id}) utilise current_user_can('read_post', $post_id) donc les publications privées sont filtrées de la même manière que le cœur de WordPress filtre les métadonnées de publication. Les requêtes anonymes obtiennent toujours 401. Les groupes de champs marqués private (ou restreints par des règles de localisation aux administrateurs) sont filtrés des réponses GET non administratives. La propriété publique fieldforge sur les points de terminaison de publication de base WordPress n’expose que les champs opt-in comme décrit dans la section 20. Voir la section 20 pour la matrice complète des capacités par point de terminaison.

php
// Restrict REST API access to specific fields
add_filter( 'fieldforge/rest/public_field_allowed', function( $allowed, $field, $post_id ) {
    return ( $field['name'] ?? '' ) === 'public_subtitle' ? true : $allowed;
}, 10, 3 );

Champs de Mot de Passe et Sensibles

Le type de champ password stocke les valeurs en texte brut. Pour les données sensibles :

php
// Encrypt on save
add_action( 'fieldforge/value_updated', function( $post_id, $field_name ) {
    if ( $field_name === 'api_secret' ) {
        $raw = FIELDFORGE_Field_Values::instance()->get_value( 'api_secret', $post_id );
        $encrypted = openssl_encrypt( $raw, 'aes-256-cbc', AUTH_KEY, 0, substr( AUTH_SALT, 0, 16 ) );
        FIELDFORGE_Field_Values::instance()->update_raw( 'api_secret', $encrypted, $post_id );
    }
}, 10, 2 );

// Decrypt on load
add_filter( 'fieldforge/load_value', function( $value, $field_name ) {
    if ( $field_name === 'api_secret' && $value ) {
        return openssl_decrypt( $value, 'aes-256-cbc', AUTH_KEY, 0, substr( AUTH_SALT, 0, 16 ) );
    }
    return $value;
}, 10, 2 );

Assistant IA Forge En ligne

Bonjour ! Je suis l'assistant IA Field Forge. Posez-moi n'importe quelle question sur le plugin — configuration, fonctionnalités, dépannage ou développement.

À l'instant
Propulsé par Forge IA · Parcourir la documentation