Documentazione · Documentazione per gli sviluppatori

Sanificazione ed Escaping

Questa pagina descrive l'approccio alla sanificazione e all'escaping del plugin a livello generale. I nomi degli helper interni, le pipeline di validazione e le regole esatte di mascheramento sono dettagli di implementazione e non vengono pubblicati qui.

Approccio

Il plugin segue le linee guida di sicurezza standard di WordPress:

  • Sanificare in fase di input. Ogni valore non attendibile viene sanificato utilizzando l'API WordPress appropriata per il suo tipo prima di essere memorizzato o utilizzato.
  • Effettuare l'escaping in fase di output. Ogni valore dinamico viene sottoposto a escaping al momento del rendering utilizzando l'API di escaping WordPress appropriata per il suo contesto (HTML, attributo, URL, JavaScript, JSON).
  • Validare, poi sanificare, poi effettuare l'escaping. La validazione rifiuta i valori fuori intervallo; la sanificazione normalizza la forma; l'escaping protegge il contesto di output.
  • Mascherare i segreti nella diagnostica. L'output diagnostico non include mai segreti in chiaro, token, intestazioni di autorizzazione o intestazioni di richieste firmate.

Per gli sviluppatori che estendono il sistema

Quando si scrive codice che si integra con il plugin (template personalizzati, override del tema, callback degli hook):

  • Trattare ogni valore proveniente da parametri di richiesta, opzioni, post meta o API di terze parti come non attendibile.
  • Utilizzare l'API di sanificazione di WordPress (sanitize_text_field, sanitize_email, wp_kses_post, absint, ecc.) in fase di input.
  • Utilizzare l'API di escaping di WordPress (esc_html, esc_attr, esc_url, esc_js, wp_json_encode) al momento dell'output.
  • Non stampare mai (tramite echo) segreti o credenziali configurati all'interno dell'output renderizzato o nelle righe di log.

Superfici di integrazione pubbliche supportate

Quando ci si integra con il plugin, preferire queste superfici stabili:

I nomi delle classi interne, le chiavi delle opzioni, le tabelle del database, gli endpoint REST e AJAX, i nomi degli hook cron, gli identificatori di capability e nonce, e l'infrastruttura di rilascio / aggiornamento sono trattati come dettagli di implementazione. Possono cambiare tra i rilasci senza preavviso e non fanno parte del contratto di integrazione pubblica.

Politica di stabilità e modifiche

Tutto ciò che non è elencato sopra come superficie pubblica supportata è considerato un dettaglio di implementazione interna. Le API interne, il layout di memorizzazione e l'implementazione della sicurezza possono variare tra i rilasci. Non dipendere da essi da codice di terze parti, temi o sistemi esterni. Le scritture dirette nel database non sono supportate.

Avviso sulla documentazione pubblica. Questa pagina fornisce solo una panoramica di integrazione ad alto livello. I dettagli di implementazione interna, le API private, gli aspetti interni di memorizzazione e l'infrastruttura di rilascio sensibile alla sicurezza sono gestiti separatamente e non fanno parte della documentazione pubblica. Le superfici di integrazione supportate sono gli shortcode documentati, gli override dei template, l'interfaccia utente delle impostazioni e qualsiasi punto di estensione esplicitamente pubblicato in questa sezione.