Sto scrivendo una funzione di ricerca e ho pensato a questa query usando i parametri per prevenire, o almeno limitare, attacchi di SQL injection. Tuttavia, quando l'eseguo il mio programma che non restituisce nulla:Come fare? Parametri e istruzione LIKE SQL
SELECT * FROM compliance_corner WHERE (body LIKE '%@query%') OR (title LIKE '%@query%')
Può parametri da utilizzare in questo modo? o sono validi solo in un'istanza come:
SELECT * FROM compliance_corner WHERE body LIKE '%<string>%'
(dove <string>
è l'oggetto di ricerca).
EDIT: Sto costruendo questa funzione con VB.NET, ha un impatto sulla sintassi che voi ragazzi avete contribuito?
Inoltre, ho eseguito questa istruzione in SQL Server: SELECT * FROM compliance_corner WHERE (body LIKE '%max%') OR (title LIKE
% max% ') `e restituisce risultati.
Come Adam ha sottolineato nella sua risposta, questo non protegge contro l'iniezione SQL. La query deve essere parametrizzata. – DOK
Potrebbe fornire un esempio in cui ciò non impedisce l'iniezione SQL? Dal mio test funziona bene – John
Non è possibile eseguire l'iniezione 'SQL', solo l'iniezione' LIKE'. Ciò significa che l'utente può inserire caratteri speciali come '%' '^' e '_' che' LIKE' interpreterà in modo speciale. Ciò significa che l'utente potrebbe non ottenere ciò che si aspetta per determinate ricerche. Ad esempio, la ricerca di "meno dell'1% di grassi" può restituire il risultato "meno dell'1% dei medici lo consiglia, è pieno di grassi!". –