splash_auth

SERVICIO CONECTADO
INAUGURACIÓN DE NUEVA PAGINA!
Sicurezza informatica

Prevenire le iniezioni SQL e XSS nelle API RESTful

Sistema IA
5 LETTURA MIN
08 Jun 2026
Prevenzione delle iniezioni SQL e XSS nelle API RESTful
========================================================

Introduzione


Le API RESTful sono essenziali per l'integrazione di applicazioni e servizi cloud, ma sono anche vulnerabili ad attacchi di iniezione di codice dannoso, come SQL e XSS. In questo articolo esploreremo le migliori pratiche e tecniche per prevenire iniezioni SQL e XSS nelle API RESTful.

Iniezioni SQL


Le SQL injection si verificano quando un utente malintenzionato inserisce codice SQL dannoso in un'applicazione per accedere a dati sensibili o modificare il database. Di seguito sono riportate le migliori pratiche per prevenire le iniezioni SQL:

1. Utilizzo di query preparate



Le query preparate sono un modo per evitare iniezioni SQL. Le query preparate vengono create con parametri separati dal codice SQL, il che impedisce l'inserimento di codice.

Esempio di codice in Java (Spring Boot)
Java
@Query("SELECT * FROM utenti WHERE nome = :nome")
List<Utente> findUserByName(@Param("nome") String nome);

2. Utilizzo di dichiarazioni preparate



Le istruzioni preparate sono simili alle query preparate, ma vengono utilizzate per istruzioni non SELECT.

Esempio di codice in Java (Spring Boot)
Java
@Modificabile
@Query(valore = "AGGIORNA utenti SET nome = :name WHERE id = :id", nativeQuery = true)
void updateUser(@Param("name") Nome stringa, @Param("id") ID lungo);

3. Utilizzo di ORM (Object-Relational Mapping)



Gli ORM come Hibernate possono aiutare a prevenire le iniezioni SQL utilizzando query e istruzioni preparate.

Esempio di codice in Java (Ibernazione)
Java
@Entità
Utente di classe pubblica {
@Colonna(nome = "nome")
nome della stringa privata;
}

classe pubblica DAOUser {
@PersistenceContext
EntityManager privato em;

public List<Utente> findUsersByName(String name) {
Query query = em.createQuery("SELECT u FROM Utente u WHERE u.name = :name");
query.setParameter("nome", nome);
restituisce query.getResultList();
}
}

4. Convalida dell'input dell'utente



La convalida dell'input dell'utente è fondamentale per prevenire le iniezioni SQL. I dati di input devono essere convalidati per garantire che non contengano codice SQL dannoso.

Esempio di codice in Java (Spring Boot)
Java
@PostMapping("/utenti")
public ResponseEntity<Utente> createUser(@RequestBody @Utente utente valido) {
// Convalida dell'input dell'utente
if (utente.getName() == null || utente.getName().isEmpty()) {
restituisce ResponseEntity.badRequest().build();
}
// Crea utente
}

Iniezioni XSS


Le iniezioni Cross-Site Scripting (XSS) si verificano quando un utente malintenzionato inserisce codice dannoso in un'applicazione Web per accedere a dati sensibili o eseguire azioni dannose. Di seguito sono riportate le migliori pratiche per prevenire le iniezioni XSS:

1. Uso dell'escape dei caratteri



L'escape dei caratteri è un modo per prevenire le iniezioni XSS. I caratteri speciali vengono sostituiti con i loro equivalenti HTML.

Esempio di codice JavaScript
javascript
const name = "<script>alert('XSS')</script>";
const escapedName = escape(nome);
console.log(nomescaped); // Risultato: <script>alert('XSS')</script>

2. Utilizzo delle librerie di escape



Le librerie di escape come DOMPurify possono aiutare a prevenire iniezioni XSS durante l'escape di caratteri speciali.

Esempio di codice JavaScript
javascript
const name = "<script>alert('XSS')</script>";
const escapedName = DOMPurify.sanitize(nome);
console.log(nomescaped); // Risultato: <script>alert('XSS')</script>

3. Utilizzo della Content-Security-Policy (CSP)



Il CSP è una direttiva che consente agli sviluppatori di specificare quali sorgenti di codice possono essere eseguite su una pagina web.

Esempio di codice HTML
html
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://cdn.example.com;">

4. Utilizzo di HTTPS



L’utilizzo di HTTPS è fondamentale per prevenire iniezioni XSS. Gli attacchi XSS possono essere prevenuti utilizzando HTTPS, che crittografa la comunicazione tra il client e il server.

Esempio di codice in Apache

"bash."
<VirtualHost *:443>
ServerName esempio.com
DocumentRoot /var/www/esempio
Motore SSL acceso
FileCertificatoSSL /etc/ssl/certs/example.crt
FileChiaveCertificatoSSL /etc/ssl/private/example.key
</VirtualHost>

### Architettura API RESTful

L'architettura API RESTful è fondamentale per prevenire iniezioni SQL e XSS. Ecco un'architettura API RESTful sicura:

**Architettura API RESTful**

![Rappresentazione tecnica](https://image.pollinations.ai/prompt/Professional+technical+diagram%2C+modern+server+architecture%2C+dark+the me%2C+UI+UX%2C+alta+qualità%2C+Prevenzione%C3%B3n+di+iniezioni+SQL+e+XSS+in+API+REST?width=800&height=400&nologo=true)

### Impostazioni di sicurezza

Le impostazioni di sicurezza sono fondamentali per prevenire iniezioni SQL e XSS. Di seguito sono riportate alcune impostazioni di sicurezza consigliate:

**Configurazione della sicurezza in Spring Boot**

"proprietà".
spring.datasource.url=jdbc:mysql://localhost:3306/esempio
spring.datasource.nomeutente=root
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=aggiornamento
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect

Configurazione della sicurezza in Apache

"bash."
<Directory /var/www/esempio>
Opzioni Indici FollowSymLinks MultiViews
Consenti sovrascrivi tutto
L'ordine consente, nega
consentire da tutti
</Directory>

<FilesMatch "\.(cgi|shtml|phtml|php)$">
Opzioni SSL +StdEnvVars
</FilesMatch>

<IfModule mod_security2.c>
SecFilterEngine acceso
SecFilterScanPOST attivato
SecFilterScanGET On
</IfModule>

**Configurazione della sicurezza in Nginx**

"bash."
server {
ascolta 80;
nome_server esempio.com;

root /var/www/esempio;
indice indice.html indice.htm indice.nginx-debian.html;

posizione / {
prova_file $uri $uri/ =404;
}

ssl_certificate /etc/ssl/certs/example.crt;
ssl_certificate_key /etc/ssl/private/example.key;
}

Conclusione


Prevenire le iniezioni SQL e XSS è fondamentale per la sicurezza delle API RESTful. In questo articolo sono state presentate le migliori pratiche e tecniche per prevenire iniezioni SQL e XSS, incluso l'uso di query preparate, istruzioni preparate, ORM, convalida dell'input dell'utente, escape dei caratteri, librerie di escape, Content-Security-Policy e HTTPS. Inoltre, sono state introdotte un'architettura API RESTful sicura e configurazioni di sicurezza consigliate per Spring Boot, Apache e Nginx.