2012-03-12 12 views
9

Ho sviluppato un sito Web per un cliente in cui pubblicheranno le immagini della loro merce online. L'URL è www.domiainname.com/item-details.cfm?sku=125. Qualcuno ha provato a cercare su www.domiainname.com/item-details.cfm?sku=125%20and%203=3 quale prodotto ed errore in cui sono stato avvisato.Si tratta di un esempio di un attacco SQL Injection?

Ho anche ricevuto segnalazioni di errori di:

[email protected]@version-- 
item-details.cfm?sku=1291'[email protected]@version 
[email protected]@version 

Gli ultimi tre esempi sono sicuramente di qualcuno che cerca di entrare nel sistema, giusto?

Se abbiamo convertito questo in stored procedure, sarebbe che ridurre o eliminare il rischio di attacchi di inserimento?

+1

E sì, le query sono avvolti nei tag cfqueryparam (ad esempio ' – HPWD

+0

Capisco cosa stavano cercando di fare con la versione @@ ma cosa direbbero 3 = 3? Il mio raccoglitore di errori riporta anche l'indirizzo IP. Ho pensato di aggiungere un db tabella e ho aggiunto gli IP che ricevo da situazioni del genere e poi mandare questi utenti a google o qualcosa del genere. È efficace o solo un esercizio in futiltà ? – HPWD

+1

Aggiungendo una tautologia (ad es. 3 = 3) stanno cercando di ottenere tutti i risultati dal database che possono. Tuttavia, forse non sono così intelligenti come tutto il resto perché avrebbero bisogno di usare OR in quel caso invece di AND! Finché utilizzi '' dovresti essere al sicuro dagli attacchi di SQL injection (almeno su SELECT, potresti essere ancora vulnerabile agli attacchi XSS su INSERT e UPDATE). Tuttavia, è una buona idea convalidare i parametri in modo da poter intercettare l'errore prima che accada: provare a fare '' per intercettare questo, o usare 'isNumeric()' essere avvisati –

risposta

8

Sì, sembra che qualcuno sia malizioso.

L'utilizzo di cfqueryparam impedisce gli attacchi di SQL injection. In caso di dubbio (ed è CF), chiedere Ben:

SQL Injection Attacks, Easy To Prevent, But Apparently Still Ignored

Esempio:

<cfquery ...> 
    SELECT * 
    FROM  Products 
    WHERE  SKU=<cfqueryparam value="#URL.SKU#" cfsqltype="CF_SQL_INTEGER"> 
</cfquery> 
+1

Contrassegnare questo come corretto come è la risposta più completa (ad esempio l'utilizzo di esempio, collegamenti al blog di Ben e livedocs). Anche le altre due risposte sono tecnicamente corrette. – HPWD

2

Usa cfqueryparam e dimenticare qualsiasi SQL-injection;)

+0

typo ... * dimenticare –

0

Sì, qualcuno ha tentato SQL injection. Se si controlla la variabile sku correttamente nel codice, questo non farà alcun danno.

Problemi correlati