Escape

L’escape consiste nel manipolare o filtrare i dati indesiderati prima di utilizzarli nell’output. È simile nel concetto alla sanificazione, ma invece di agire sull’input, agiamo sull’output.

Ad esempio, alcuni dati potrebbero essere recuperati dal database di WordPress e visualizzati su una pagina.

L’escape di tali dati previene vulnerabilità come il Cross-Site Scripting.

Funzioni WordPress comuni di escape

Di seguito sono riportate alcune funzioni di escape comunemente utilizzate e disponibili nella WordPress Security API .

esc_html()

Esegue l’escape dell’HTML per evitare che venga interpretato come codice e dovrebbe essere utilizzato quando si emettono dati all’interno di elementi HTML (ad esempio, all’interno di un <div>).

  • Tag HTML
    • Ingresso: <strong>Hello World</strong>
    • Uscita: &lt;strong&gt;Hello World&lt;/strong&gt;
    • Spiegazione: i tag HTML vengono sostituiti con i loro equivalenti di entità HTML per evitare che vengano interpretati come HTML.
  • Caratteri speciali
    • Ingresso: 5 > 3 & 2 < 4
    • Uscita: 5 &gt; 3 &amp; 2 &lt; 4
    • Spiegazione: i caratteri speciali come ><, e &vengono convertiti in entità HTML ( &gt;&lt;&amp;).
  • Citazioni
    • Ingresso: "Hello" 'World'
    • Uscita: &quot;Hello&quot; &#039;World&#039;
    • Spiegazione: le virgolette doppie e singole vengono sostituite rispettivamente con &quot;e .&amp#039;

esc_attr()

Esegue l’escape dei dati negli attributi HTML e dovrebbe essere utilizzato quando si emettono dati all’interno di questi attributi (ad esempio, titlealt).

  • Tag HTML
    • Ingresso: <div class="example">Hello World</div>
    • Uscita: &lt;div class=&quot;example&quot;&gt;Hello World&lt;/div&gt;
    • Spiegazione: i tag e gli attributi HTML vengono sostituiti con i loro equivalenti di entità HTML per impedire l’esecuzione all’interno degli attributi.
  • Caratteri speciali
    • Ingresso: a & b
    • Uscita: a &amp; b
    • Spiegazione: i caratteri speciali come &vengono convertiti per &amp;garantire che siano sicuri all’interno degli attributi HTML.
  • Citazioni
    • Ingresso: John's "book"
    • Uscita: John&#039;s &quot;book&quot;
    • Spiegazione: le virgolette singole e doppie vengono sostituite rispettivamente con &#039;&quot;per evitare che interrompano il valore dell’attributo.
  • Parentesi angolari
    • Ingresso: 2 < 3 > 1
    • Uscita: 2 &lt; 3 &gt; 1
    • Spiegazione: le parentesi angolari vengono sostituite con &lt;&gt;per evitare che vengano interpretate come parte di un tag HTML.

esc_url()

Esegue l’escape degli URL per garantire che siano sicuri per l’uso negli attributi hrefsrc.

  • Protocolli non sicuri
    • Ingresso: javascript:alert('XSS')
    • Uscita: (stringa vuota, poiché rimuove l’intero URL)
    • Spiegazione: Protocolli come javascript:vengono completamente eliminati.
  • Caratteri speciali
    • Ingresso: http://example.com/test?name=John&age=30
    • Uscita: http://example.com/test?name=John&#038;age=30
    • Spiegazione: il &carattere viene convertito per &#038;garantire che l’URL sia sicuro in HTML.
  • Spazi e altri caratteri non URL
    • Ingresso: http://example.com/space test
    • Uscita: http://example.com/space%20test
    • Spiegazione: gli spazi e gli altri caratteri non validi sono codificati in percentuale.

esc_js()

Esegue l’escape dei dati per un’inclusione sicura in JavaScript. Questa funzione deve essere utilizzata prima di generare dati all’interno <script>di tag o in JavaScript in linea.

  • Tag HTML
    • Ingresso: <script>alert('XSS')</script>
    • Uscita: &lt;script&gt;alert('XSS')&lt;/script&gt;
    • Spiegazione: i tag HTML vengono convertiti nei loro equivalenti di entità, assicurando che non vengano interpretati come codice eseguibile.
  • Citazioni
    • Ingresso: "Hello 'World'"
    • Uscita: &quot;Hello \'World\'&quot;
    • Spiegazione: le virgolette doppie vengono convertite in entità HTML, mentre le virgolette singole vengono precedute da barre rovesciate.
  • Caratteri di nuova riga e ritorni a capo
    • Ingresso: Hello\nWorld
    • Uscita: Hello\\nWorld
    • Spiegazione: le nuove righe vengono sottoposte a escape per garantire che non interrompano la stringa JavaScript o introducano comportamenti indesiderati.

Le funzioni di WordPress coinvolte nella convalida, sanificazione ed escape vengono generalmente utilizzate per prevenire le vulnerabilità di Cross-Site Scripting.


Traduzione in italiano della WordPress Security Research di Wordfence

WordPress Security Architecture

Lascia un commento