{"id":1722,"date":"2025-10-21T16:48:09","date_gmt":"2025-10-21T16:48:09","guid":{"rendered":"https:\/\/paoloronco.it\/?p=1722"},"modified":"2025-11-18T10:08:37","modified_gmt":"2025-11-18T10:08:37","slug":"website-security-audit-automatizzato-con-n8n-e-openai","status":"publish","type":"post","link":"https:\/\/paoloronco.it\/en\/website-security-audit-automatizzato-con-n8n-e-openai\/","title":{"rendered":"Automated Website Security Audit: With n8n and OpenAI"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Da tempo utilizzo <strong>n8n<\/strong> per automatizzare diversi processi, sia nel mio lavoro quotidiano che nei miei progetti personali.<br>\u00c8 una piattaforma che trovo estremamente versatile: permette di creare workflow complessi integrando API, servizi cloud, sistemi di monitoraggio e, pi\u00f9 di recente, anche <strong>modelli di intelligenza artificiale<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tra i vari flussi che ho sperimentato, quello che mi ha dato maggior soddisfazione \u00e8 il <strong>Website Security Auditor<\/strong>, basato su un template pubblico disponibile su <a href=\"https:\/\/n8n.io\/workflows\/3314-websecscan-ai-powered-website-security-auditor\/\">n8n.io<\/a>.<br>Si tratta di un workflow che effettua un <strong>audit di sicurezza automatico dei siti web<\/strong>, sfruttando l\u2019AI per analizzare header, configurazioni e codice lato client, e inviare poi un report dettagliato via email.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">La sicurezza come priorit\u00e0<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La sicurezza dei miei siti \u2014 e soprattutto quella dei visitatori \u2014 \u00e8 sempre stata una priorit\u00e0.<br>Anche se i miei progetti non gestiscono login, pagamenti o dati sensibili, considero fondamentale prevenire attacchi e vulnerabilit\u00e0 comuni come:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cross-Site Scripting (XSS)<\/strong><\/li>\n\n\n\n<li><strong>Content Injection o Clickjacking<\/strong><\/li>\n\n\n\n<li><strong>Configurazioni HTTPS errate<\/strong><\/li>\n\n\n\n<li><strong>Mancanza di header di sicurezza fondamentali<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Questi problemi non solo possono compromettere l\u2019esperienza degli utenti, ma in certi casi permettere a malintenzionati di sfruttare i miei siti come vettori di attacco verso altri.<br>Automatizzare i controlli di sicurezza mi consente di <strong>mantenere un livello di protezione costante<\/strong> senza dover eseguire test manuali a ogni aggiornamento.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Come funziona il workflow<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Il flusso parte in modo semplice: inserisco l\u2019URL del sito da analizzare e n8n esegue una serie di passaggi automatici:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Effettua il <strong>fetch del contenuto<\/strong> e degli <strong>header HTTP<\/strong> del sito.<\/li>\n\n\n\n<li>Passa i dati a due moduli AI (basati su <strong>GPT-5<\/strong>) che eseguono:\n<ul class=\"wp-block-list\">\n<li>un\u2019<strong>analisi delle configurazioni di sicurezza<\/strong> (HTTP headers, cookie, CSP, HSTS, ecc.);<\/li>\n\n\n\n<li>un\u2019<strong>analisi del contenuto HTML e JavaScript<\/strong>, per individuare vulnerabilit\u00e0 lato client.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>I risultati vengono aggregati e <strong>trasformati in un report HTML professionale<\/strong>, con un <strong>punteggio di sicurezza (da F ad A+)<\/strong> e suggerimenti concreti per la correzione.<\/li>\n\n\n\n<li>Infine, il workflow <strong>invia automaticamente il report via email<\/strong>, completo di grafici e sezioni colorate per una lettura immediata.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c8 un sistema <strong>non invasivo<\/strong>, che analizza solo le informazioni pubbliche del sito e restituisce un quadro chiaro del livello di sicurezza.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Dai problemi iniziali ai miglioramenti concreti<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Quando ho eseguito i primi test su <strong>paoloronco.it<\/strong>, i punteggi iniziali erano piuttosto bassi (classe <strong>D<\/strong>).<br>Analizzando i risultati e seguendo le raccomandazioni generate dal report, ho implementato varie <strong>Cloudflare Rules<\/strong> per aggiungere header di sicurezza mancanti, come:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>Strict-Transport-Security: max-age=31536000; includeSubDomains; preload<\/code><\/li>\n\n\n\n<li><code>X-Content-Type-Options: nosniff<\/code><\/li>\n\n\n\n<li><code>X-Frame-Options: SAMEORIGIN<\/code><\/li>\n\n\n\n<li><code>Permissions-Policy: geolocation=(), microphone=(), camera=(), payment=()<\/code><\/li>\n\n\n\n<li><code>Referrer-Policy: strict-origin-when-cross-origin<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Dopo queste modifiche, il punteggio \u00e8 salito fino ad <strong>A-<\/strong>, con una configurazione solida e in linea con le best practice.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ho applicato la stessa logica anche ai miei altri progetti, compresi quelli statici su <strong>Vercel<\/strong>, tramite il file <code>vercel.json<\/code>, cos\u00ec da estendere facilmente la protezione anche ai sottodomini.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Piccole sfide tecniche<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019unico limite riscontrato riguarda i <strong>siti di grandi dimensioni<\/strong>, dove il modulo di analisi \u201cSecurity Vulnerabilities Audit\u201d pu\u00f2 andare in errore per <strong>input troppo lunghi (token limit)<\/strong> o <strong>timeout<\/strong>.<br>Per mitigarlo, sto valutando di segmentare l\u2019analisi o di passare a una versione del modello con contesto esteso, cos\u00ec da mantenere l\u2019automazione anche su domini pi\u00f9 complessi.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Un alleato nella sicurezza<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Questo esperimento con n8n mi ha confermato quanto l\u2019automazione possa essere potente anche in ambito <strong>cybersecurity<\/strong>.<br>Un flusso ben progettato permette di:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>rilevare vulnerabilit\u00e0 in modo proattivo,<\/li>\n\n\n\n<li>standardizzare le verifiche di sicurezza,<\/li>\n\n\n\n<li>e soprattutto, <strong>integrare l\u2019AI nei processi di auditing quotidiano<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Per me \u00e8 diventato un piccolo strumento di routine, utile per garantire che i miei siti restino <strong>sicuri, aggiornati e conformi alle migliori pratiche di sicurezza web<\/strong> \u2014 senza perdere tempo in controlli ripetitivi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Security Report di esempio:<\/h2>\n\n\n\n<div id=\":9k\" class=\"ii gt\" jslog=\"20277; u014N:xr6bB; 1:WyIjdGhyZWFkLWY6MTg0NjYxMDk2NTcyNjIyNjE4NCJd; 4:WyIjbXNnLWY6MTg0NjYxMDk2NTcyNjIyNjE4NCIsbnVsbCxudWxsLG51bGwsMSwwLFsxLDAsMF0sNzQ0LDYwODEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMCwwXQ..\"><div id=\":9j\" class=\"a3s aiL msg5214027070715621164\"><div class=\"adM\">\n\t\t\t<\/div><u><\/u>\n\n\n    \n    \n    \n    \n\n<div>\n    <div class=\"m_5214027070715621164container\">\n        \n        <div class=\"m_5214027070715621164header\">\n            <h1 style=\"color:white\">Website Security Audit Report<\/h1>\n        <\/div>\n        \n        <div class=\"m_5214027070715621164content\">\n            \n            <div class=\"m_5214027070715621164summary-box\">\n                <h2>Security Report Summary<\/h2>\n                <table style=\"width:100%\">\n                    <tbody><tr>\n                        <td style=\"width:120px\" valign=\"top\">\n                            <div style=\"font-size:64px;font-weight:bold;width:100px;height:100px;line-height:100px;text-align:center;background-color:#3498db;color:white;border-radius:5px;margin:0 auto\">B<\/div>\n                        <\/td>\n                        <td valign=\"top\">\n                            <table style=\"width:100%\">\n                                <tbody><tr>\n                                    <td><strong>Site:<\/strong><\/td>\n                                    <td><a href=\"https:\/\/paoloronco.it\" style=\"color:#3498db\" target=\"_blank\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/paoloronco.it&amp;source=gmail&amp;ust=1761151872719000&amp;usg=AOvVaw2WmycexRnK0wtJUd0Wxojs\">https:\/\/paoloronco.it<\/a><\/td>\n                                <\/tr>\n                                <tr>\n                                    <td><strong>Report Time:<\/strong><\/td>\n                                    <td>October 21, 2025 at 04:50 PM<\/td>\n                                <\/tr>\n                                <tr>\n                                    <td valign=\"top\"><strong>Headers:<\/strong><\/td>\n                                    <td>\n                                        <div class=\"m_5214027070715621164header-badges\">\n                                            <span style=\"display:inline-block;margin:2px;padding:4px 8px;background-color:#e74c3c;color:white;border-radius:4px;font-size:12px\">\u2717 Content-Security-Policy<\/span><span style=\"display:inline-block;margin:2px;padding:4px 8px;background-color:#27ae60;color:white;border-radius:4px;font-size:12px\">\u2713 Strict-Transport-Security<\/span><span style=\"display:inline-block;margin:2px;padding:4px 8px;background-color:#27ae60;color:white;border-radius:4px;font-size:12px\">\u2713 X-Content-Type-Options<\/span><span style=\"display:inline-block;margin:2px;padding:4px 8px;background-color:#27ae60;color:white;border-radius:4px;font-size:12px\">\u2713 X-Frame-Options<\/span><span style=\"display:inline-block;margin:2px;padding:4px 8px;background-color:#27ae60;color:white;border-radius:4px;font-size:12px\">\u2713 Referrer-Policy<\/span><span style=\"display:inline-block;margin:2px;padding:4px 8px;background-color:#27ae60;color:white;border-radius:4px;font-size:12px\">\u2713 Permissions-Policy<\/span>\n                                        <\/div>\n                                    <\/td>\n                                <\/tr>\n                                <tr>\n                                    <td><strong>Critical Issues:<\/strong><\/td>\n                                    <td>0<\/td>\n                                <\/tr>\n                                <tr>\n                                    <td><strong>Warnings:<\/strong><\/td>\n                                    <td>3<\/td>\n                                <\/tr>\n                            <\/tbody><\/table>\n                        <\/td>\n                    <\/tr>\n                <\/tbody><\/table>\n            <\/div>\n\n            \n            <div class=\"m_5214027070715621164warning-box\">\n                <h2>Warnings<\/h2>\n                \n      <div style=\"margin-top:15px\">\n        <div style=\"border-left:4px solid #f39c12;padding:10px\">\n          <strong style=\"color:#f39c12\">3 warnings detected<\/strong>\n          <p>See the Configuration Issues section below for more info.<\/p>\n        <\/div>\n      <\/div>\n            <\/div>\n\n            \n            <div class=\"m_5214027070715621164raw-headers-box\">\n                <h2>Raw Headers<\/h2>\n                \n    <table style=\"width:100%;border-collapse:collapse;margin-top:10px\">\n      <thead>\n        <tr style=\"background-color:#e0e0e0\">\n          <th style=\"padding:10px\">Header<\/th>\n          <th style=\"padding:10px\">Status<\/th>\n          <th style=\"padding:10px\">Value<\/th>\n        <\/tr>\n      <\/thead>\n      <tbody>\n        \n      <tr style=\"background-color:#f8f9fa;color:#333\">\n        <td title=\"Informational\" style=\"padding:8px;font-weight:bold\">date<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">Tue, 21 Oct 2025 16:50:31 GMT<\/td>\n      <\/tr>\n      <tr style=\"background-color:#f8f9fa;color:#333\">\n        <td title=\"Informational\" style=\"padding:8px;font-weight:bold\">content-type<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">text\/html; charset=UTF-8<\/td>\n      <\/tr>\n      <tr style=\"background-color:#f8f9fa;color:#333\">\n        <td title=\"Informational\" style=\"padding:8px;font-weight:bold\">transfer-encoding<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">chunked<\/td>\n      <\/tr>\n      <tr style=\"background-color:#f8f9fa;color:#333\">\n        <td title=\"Informational\" style=\"padding:8px;font-weight:bold\">connection<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">close<\/td>\n      <\/tr>\n      <tr style=\"background-color:#f8f9fa;color:#333\">\n        <td title=\"Informational\" style=\"padding:8px;font-weight:bold\">report-to<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">{&#8220;group&#8221;:&#8221;cf-nel&#8221;,<br>&#8220;max_age&#8221;:604800,<br>&#8220;endpoints&#8221;:[{&#8220;url&#8221;:&#8221;<a href=\"https:\/\/a.nel.cloudflare.com\/report\/v4?s=1yQ1J5ssSLv1SkmE6Ryid4wgzrlR3AtZbA7JA8sOJg9lH6eilgyRhGgg7o%2FbvORNExuw8i3pZ%2BdOGjAgsb3cT5WNvNn0DM9sHhwJ%2BGo%3D\" target=\"_blank\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/a.nel.cloudflare.com\/report\/v4?s%3D1yQ1J5ssSLv1SkmE6Ryid4wgzrlR3AtZbA7JA8sOJg9lH6eilgyRhGgg7o%252FbvORNExuw8i3pZ%252BdOGjAgsb3cT5WNvNn0DM9sHhwJ%252BGo%253D&amp;source=gmail&amp;ust=1761151872719000&amp;usg=AOvVaw0Yh7CkME3eVbhmiIUdDp0o\">https:\/\/<wbr>a.nel.cloudflare.com\/report\/<wbr>v4?s=<wbr>1yQ1J5ssSLv1SkmE6Ryid4wgzrlR3A<wbr>tZbA7JA8sOJg9lH6eilgyRhGgg7o%<wbr>2FbvORNExuw8i3pZ%<wbr>2BdOGjAgsb3cT5WNvNn0DM9sHhwJ%<wbr>2BGo%3D&#8221;}]}<\/a><\/td>\n      <\/tr>\n      <tr style=\"background-color:#f8f9fa;color:#333\">\n        <td title=\"Informational\" style=\"padding:8px;font-weight:bold\">link<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">&lt;<a href=\"https:\/\/paoloronco.it\/wp-json\/%3E;%3Cbr%3E\" target=\"_blank\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/paoloronco.it\/wp-json\/%253E;%253Cbr%253E&amp;source=gmail&amp;ust=1761151872719000&amp;usg=AOvVaw2SshMVNdSO1JtG7-DMUt-7\">https:\/\/paoloronco.it\/wp-<wbr>json\/&gt;;<br><\/a> rel=&#8221;<a href=\"https:\/\/api.w.org\/\" target=\"_blank\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/api.w.org\/&amp;source=gmail&amp;ust=1761151872720000&amp;usg=AOvVaw11m0ehvWpAGZ99nDnQRxvI\">&#8221; style=&#8221;color: #3498DB;<br>text-decoration: none;<br>&#8221; target=&#8221;_blank&#8221;&gt;https:\/\/api.w.<wbr>org\/&#8221;,<br><\/a> &lt;<a href=\"https:\/\/paoloronco.it\/wp-json\/wp\/v2\/pages\/1251%3E;%3Cbr%3E\" target=\"_blank\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/paoloronco.it\/wp-json\/wp\/v2\/pages\/1251%253E;%253Cbr%253E&amp;source=gmail&amp;ust=1761151872720000&amp;usg=AOvVaw16AYrRUevw-D_ofiLhqme4\">https:\/\/paoloronco.it\/wp-<wbr>json\/wp\/v2\/pages\/1251&gt;;<br><\/a> rel=&#8221;alternate&#8221;;<br>title=&#8221;JSON&#8221;;<br>type=&#8221;application\/json&#8221;,<br>&lt;<a href=\"https:\/\/paoloronco.it\/%3E;%3Cbr%3E\" target=\"_blank\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/paoloronco.it\/%253E;%253Cbr%253E&amp;source=gmail&amp;ust=1761151872720000&amp;usg=AOvVaw3t6oYM-2gOJN4jzjfK29FT\">https:\/\/paoloronco.it\/&gt;;<br><\/a> rel=shortlink<\/td>\n      <\/tr>\n      <tr style=\"background-color:#f8f9fa;color:#333\">\n        <td title=\"Informational\" style=\"padding:8px;font-weight:bold\">server<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">cloudflare<\/td>\n      <\/tr>\n      <tr style=\"background-color:#f8f9fa;color:#333\">\n        <td title=\"Informational\" style=\"padding:8px;font-weight:bold\">vary<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">Accept-Encoding<\/td>\n      <\/tr>\n      <tr style=\"background-color:#f8f9fa;color:#333\">\n        <td title=\"Informational\" style=\"padding:8px;font-weight:bold\">x-powered-by<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">PHP\/8.2.28<\/td>\n      <\/tr>\n      <tr style=\"background-color:#f8f9fa;color:#333\">\n        <td title=\"Informational\" style=\"padding:8px;font-weight:bold\">cf-cache-status<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">DYNAMIC<\/td>\n      <\/tr>\n      <tr style=\"background-color:#f8f9fa;color:#333\">\n        <td title=\"Informational\" style=\"padding:8px;font-weight:bold\">nel<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">{&#8220;report_to&#8221;:&#8221;cf-nel&#8221;,&#8221;<wbr>success_fraction&#8221;:0.0,&#8221;max_<wbr>age&#8221;:604800}<\/td>\n      <\/tr>\n      <tr style=\"background-color:#f8f9fa;color:#333\">\n        <td title=\"Informational\" style=\"padding:8px;font-weight:bold\">speculation-rules<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">&#8220;\/cdn-cgi\/speculation&#8221;<\/td>\n      <\/tr>\n      <tr style=\"background-color:#e8f5e9;color:#2e7d32\">\n        <td title=\"Secure\" style=\"padding:8px;font-weight:bold\">strict-transport-security<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">max-age=31536000; includeSubDomains; preload<\/td>\n      <\/tr>\n      <tr style=\"background-color:#f8f9fa;color:#333\">\n        <td title=\"Informational\" style=\"padding:8px;font-weight:bold\">content-security-policy-<wbr>report-only<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">default-src &#8216;self&#8217;;<br>img-src &#8216;self&#8217; data: https:;<br>style-src &#8216;self&#8217; &#8216;unsafe-inline&#8217; https:;<br>script-src &#8216;self&#8217; &#8216;unsafe-inline&#8217; https:;<br>font-src &#8216;self&#8217; data: https:;<br>connect-src &#8216;self&#8217; https:;<br>frame-ancestors &#8216;self&#8217;;<br>base-uri &#8216;self&#8217;;<br>form-action &#8216;self&#8217;;<br>upgrade-insecure-requests<\/td>\n      <\/tr>\n      <tr style=\"background-color:#e8f5e9;color:#2e7d32\">\n        <td title=\"Secure\" style=\"padding:8px;font-weight:bold\">permissions-policy<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">geolocation=(), microphone=(), camera=(), payment=(), usb=(), interest-cohort=()<\/td>\n      <\/tr>\n      <tr style=\"background-color:#e8f5e9;color:#2e7d32\">\n        <td title=\"Secure\" style=\"padding:8px;font-weight:bold\">referrer-policy<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">strict-origin-when-cross-<wbr>origin<\/td>\n      <\/tr>\n      <tr style=\"background-color:#e8f5e9;color:#2e7d32\">\n        <td title=\"Secure\" style=\"padding:8px;font-weight:bold\">x-content-type-options<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">nosniff<\/td>\n      <\/tr>\n      <tr style=\"background-color:#e8f5e9;color:#2e7d32\">\n        <td title=\"Secure\" style=\"padding:8px;font-weight:bold\">x-frame-options<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">SAMEORIGIN<\/td>\n      <\/tr>\n      <tr style=\"background-color:#e8f5e9;color:#2e7d32\">\n        <td title=\"Secure\" style=\"padding:8px;font-weight:bold\">x-xss-protection<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">0<\/td>\n      <\/tr>\n      <tr style=\"background-color:#f8f9fa;color:#333\">\n        <td title=\"Informational\" style=\"padding:8px;font-weight:bold\">server-timing<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">cfCacheStatus;desc=&#8221;DYNAMIC&#8221;, cfEdge;dur=5,cfOrigin;dur=115<\/td>\n      <\/tr>\n      <tr style=\"background-color:#f8f9fa;color:#333\">\n        <td title=\"Informational\" style=\"padding:8px;font-weight:bold\">cf-ray<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">992241206e0ff615-MXP<\/td>\n      <\/tr>\n      <tr style=\"background-color:#f8f9fa;color:#333\">\n        <td title=\"Informational\" style=\"padding:8px;font-weight:bold\">alt-svc<\/td>\n        <td style=\"padding:8px;text-align:center\">present<\/td>\n        <td style=\"padding:8px;word-break:break-word;font-family:monospace\">h3=&#8221;:443&#8243;; ma=86400<\/td>\n      <\/tr>\n      <\/tbody>\n    <\/table>\n            <\/div>\n\n            \n            <div class=\"m_5214027070715621164findings-box\">\n                <h2>Security Findings<\/h2>\n                \n                \n                <h3>Vulnerabilities<\/h3>\n                <p>No vulnerabilities detected.<\/p>\n                \n                \n                <h3>Configuration Issues<\/h3>\n                \n      <div style=\"border-left:4px solid #3498db;padding:10px;margin-bottom:15px\">\n        <div style=\"font-weight:bold;color:#3498db\">Strict-Transport-Security<\/div>\n        <div style=\"margin-top:5px\">This header is unknown. Value: max-age=31536000; includeSubDomains; preload.<\/div>\n        \n        \n      <\/div>\n      <div style=\"border-left:4px solid #3498db;padding:10px;margin-bottom:15px\">\n        <div style=\"font-weight:bold;color:#3498db\">Content-Security-Policy<\/div>\n        <div style=\"margin-top:5px\">This header is unknown. Value: default-src &#8216;self&#8217;; img-src &#8216;self&#8217; data: https:; style-src &#8216;self&#8217; &#8216;unsafe-inline&#8217; https:; script-src &#8216;self&#8217; &#8216;unsafe-inline&#8217; https:; font-src &#8216;self&#8217; data: https:; connect-src &#8216;self&#8217; https:; frame-ancestors &#8216;self&#8217;; base-uri &#8216;self&#8217;; form-action &#8216;self&#8217;; upgrade-insecure-requests.<\/div>\n        \n        \n      <\/div>\n      <div style=\"border-left:4px solid #3498db;padding:10px;margin-bottom:15px\">\n        <div style=\"font-weight:bold;color:#3498db\">Permissions-Policy<\/div>\n        <div style=\"margin-top:5px\">This header is unknown. Value: geolocation=(), microphone=(), camera=(), payment=(), usb=(), interest-cohort=().<\/div>\n        \n        \n      <\/div>\n      <div style=\"border-left:4px solid #3498db;padding:10px;margin-bottom:15px\">\n        <div style=\"font-weight:bold;color:#3498db\">Referrer-Policy<\/div>\n        <div style=\"margin-top:5px\">This header is unknown. Value: strict-origin-when-cross-<wbr>origin.<\/div>\n        \n        \n      <\/div>\n      <div style=\"border-left:4px solid #3498db;padding:10px;margin-bottom:15px\">\n        <div style=\"font-weight:bold;color:#3498db\">X-Content-Type-Options<\/div>\n        <div style=\"margin-top:5px\">This header is unknown. Value: nosniff.<\/div>\n        \n        \n      <\/div>\n      <div style=\"border-left:4px solid #3498db;padding:10px;margin-bottom:15px\">\n        <div style=\"font-weight:bold;color:#3498db\">X-Frame-Options<\/div>\n        <div style=\"margin-top:5px\">This header is unknown. Value: SAMEORIGIN.<\/div>\n        \n        \n      <\/div>\n      <div style=\"border-left:4px solid #3498db;padding:10px;margin-bottom:15px\">\n        <div style=\"font-weight:bold;color:#3498db\">X-XSS-Protection<\/div>\n        <div style=\"margin-top:5px\">This header is unknown. Value: 0.<\/div>\n        \n        \n      <\/div>\n      <div style=\"border-left:4px solid #3498db;padding:10px;margin-bottom:15px\">\n        <div style=\"font-weight:bold;color:#3498db\">Content Security Policy &#8211; &#8216;unsafe-inline&#8217;<\/div>\n        <div style=\"margin-top:5px\">The Content Security Policy allows the use of `&#8217;unsafe-inline&#8217;` for both scripts and styles.<\/div>\n        \n        \n      <\/div>\n      <div style=\"border-left:4px solid #3498db;padding:10px;margin-bottom:15px\">\n        <div style=\"font-weight:bold;color:#3498db\">X-XSS-Protection<\/div>\n        <div style=\"margin-top:5px\">The X-XSS-Protection header is set to `0`, meaning that the browser&#8217;s built-in XSS protection is disabled.<\/div>\n        \n        \n      <\/div>\n            <\/div>\n            \n            <div class=\"m_5214027070715621164additional-info-box\">\n              <h2>Additional Information<\/h2>\n              \n    <table style=\"width:100%;border-collapse:collapse;margin-top:10px\">\n      <tbody>\n        \n      <tr>\n        <td style=\"padding:8px;border-bottom:1px solid #eee;color:#3498db;font-weight:bold\">access-control-allow-origin<\/td>\n        <td style=\"padding:8px;border-bottom:1px solid #eee\">This is a very lax CORS policy. Such a policy should only be used on a public CDN.<\/td>\n      <\/tr>\n    \n      <tr>\n        <td style=\"padding:8px;border-bottom:1px solid #eee;color:#27ae60;font-weight:bold\">strict-transport-security<\/td>\n        <td style=\"padding:8px;border-bottom:1px solid #eee\">HTTP Strict Transport Security is an excellent feature to support on your site and strengthens your implementation of TLS by getting the User Agent to enforce the use of HTTPS.<\/td>\n      <\/tr>\n    \n      <tr>\n        <td style=\"padding:8px;border-bottom:1px solid #eee;color:#27ae60;font-weight:bold\">content-security-policy<\/td>\n        <td style=\"padding:8px;border-bottom:1px solid #eee\">Content Security Policy is an effective measure to protect your site from XSS attacks. By whitelisting sources of approved content, you can prevent the browser from loading malicious assets. Analyse this policy in more detail. You can sign up for a free account on Report URI to collect reports about problems on your site.<\/td>\n      <\/tr>\n    \n      <tr>\n        <td style=\"padding:8px;border-bottom:1px solid #eee;color:#27ae60;font-weight:bold\">permissions-policy<\/td>\n        <td style=\"padding:8px;border-bottom:1px solid #eee\">Permissions Policy is a new header that allows a site to control which features and APIs can be used in the browser.<\/td>\n      <\/tr>\n    \n      <tr>\n        <td style=\"padding:8px;border-bottom:1px solid #eee;color:#27ae60;font-weight:bold\">referrer-policy<\/td>\n        <td style=\"padding:8px;border-bottom:1px solid #eee\">Referrer Policy is a new header that allows a site to control how much information the browser includes with navigations away from a document and should be set by all sites.<\/td>\n      <\/tr>\n    \n      <tr>\n        <td style=\"padding:8px;border-bottom:1px solid #eee;color:#27ae60;font-weight:bold\">x-content-type-options<\/td>\n        <td style=\"padding:8px;border-bottom:1px solid #eee\">X-Content-Type-Options stops a browser from trying to MIME-sniff the content type and forces it to stick with the declared content-type. The only valid value for this header is &#8220;X-Content-Type-Options: nosniff&#8221;.<\/td>\n      <\/tr>\n    \n      <tr>\n        <td style=\"padding:8px;border-bottom:1px solid #eee;color:#27ae60;font-weight:bold\">x-frame-options<\/td>\n        <td style=\"padding:8px;border-bottom:1px solid #eee\">X-Frame-Options tells the browser whether you want to allow your site to be framed or not. By preventing a browser from framing your site you can defend against attacks like clickjacking.<\/td>\n      <\/tr>\n    \n      <tr>\n        <td style=\"padding:8px;border-bottom:1px solid #eee;color:#3498db;font-weight:bold\">report-to<\/td>\n        <td style=\"padding:8px;border-bottom:1px solid #eee\">Report-To enables the Reporting API. This allows a website to collect reports from the browser about various errors that may occur. You can sign up for a free account on Report URI to collect these reports.<\/td>\n      <\/tr>\n    \n      <tr>\n        <td style=\"padding:8px;border-bottom:1px solid #eee;color:#3498db;font-weight:bold\">nel<\/td>\n        <td style=\"padding:8px;border-bottom:1px solid #eee\">Network Error Logging is a new header that instructs the browser to send reports during various network or application errors. You can sign up for a free account on Report URI to collect these reports.<\/td>\n      <\/tr>\n    \n      <tr>\n        <td style=\"padding:8px;border-bottom:1px solid #eee;color:#3498db;font-weight:bold\">server<\/td>\n        <td style=\"padding:8px;border-bottom:1px solid #eee\">Server value has been changed. Typically you will see values like &#8220;Microsoft-IIS\/8.0&#8221; or &#8220;nginx 1.7.2&#8221;.<\/td>\n      <\/tr>\n    \n      <\/tbody>\n    <\/table>\n  \n            <\/div>\n            \n            \n            <div class=\"m_5214027070715621164findings-box\">\n                <h2>Implementation Guide<\/h2>\n                <p>This report highlights security issues detected through client-side analysis. For a comprehensive security assessment, consider engaging a professional penetration tester.<\/p>\n                \n                <div style=\"background-color:#eafaf1;padding:15px;margin-top:15px;border-left:4px solid #2ecc71;border-radius:3px\">\n                    <p><strong>To implement the fixes above:<\/strong><\/p>\n                    <ol style=\"padding-left:20px;margin-top:10px\">\n                        <li>Work with your development team to address each issue in order of criticality<\/li>\n                        <li>Retest after implementing each fix<\/li>\n                        <li>Consider implementing a web application firewall for additional protection<\/li>\n                    <\/ol>\n                <\/div>\n            <\/div>\n            \n            \n            <div style=\"text-align:center;padding:20px;font-size:12px;color:#777\">\n                <p>This report was automatically generated and represents an automated assessment of publicly accessible aspects of your website. For a more comprehensive security assessment, consider engaging with a professional security consultant.<\/p>\n                <p>\u00a9 2025 Website Security Scanner | Generated on October 21, 2025 at 04:50 PM<\/p>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n\t\t\t<br>\n\t\t\t<br>\n\t\t\t&#8212;\n\t\t\t<br>\n\t\t\t<em>This email was sent automatically with <a href=\"https:\/\/n8n.io\/?utm_source=n8n-internal&amp;utm_medium=powered_by&amp;utm_campaign=n8n-nodes-base.gmail_9d797abf871ff7776b72030f386aac63fbb09752ce3bb94854a66e7091951bfc\" target=\"_blank\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/n8n.io\/?utm_source%3Dn8n-internal%26utm_medium%3Dpowered_by%26utm_campaign%3Dn8n-nodes-base.gmail_9d797abf871ff7776b72030f386aac63fbb09752ce3bb94854a66e7091951bfc&amp;source=gmail&amp;ust=1761151872720000&amp;usg=AOvVaw1sS8nRpzGjHa45QZjcNVmi\">n8n<\/a><\/em><div class=\"yj6qo\"><\/div><div class=\"adL\">\n\t\t\t\n<\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Da tempo utilizzo n8n per automatizzare diversi processi, sia nel mio lavoro quotidiano che nei miei progetti personali.\u00c8 una piattaforma che trovo estremamente versatile: permette di creare workflow complessi integrando API, servizi cloud, sistemi di monitoraggio e, pi\u00f9 di recente, anche modelli di intelligenza artificiale. Tra i vari flussi che ho sperimentato, quello che mi &hellip; <a href=\"https:\/\/paoloronco.it\/en\/website-security-audit-automatizzato-con-n8n-e-openai\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Website Security Audit automatizzato: con n8n e OpenAI&#8221;<\/span><\/a><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[23],"class_list":["post-1722","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-portfolio"],"_links":{"self":[{"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/posts\/1722","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/comments?post=1722"}],"version-history":[{"count":2,"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/posts\/1722\/revisions"}],"predecessor-version":[{"id":1725,"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/posts\/1722\/revisions\/1725"}],"wp:attachment":[{"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/media?parent=1722"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/categories?post=1722"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/tags?post=1722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}