|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2004
Messaggi: 364
|
[Java/Sql] Problema apice
Salve ragazzi ho un problema con l'esecuzione di una query insert, tramite una procedura java. Il problema è questo, devo inserire un record in una tabella, ma un campo di questa tabella, ha un apice al suo interno, e questo apice sql lo interpreta come carattere di fine stringa, quindi la query, mi va in errore. Premetto che per vari motivi non posso usare il prepate statement con java, ed ho provato a mettere il carattere \\, prima di ogni apice, ma il problema rimane, come posso risolverlo?
Grazie a chi vorrà aiutarmi ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Puoi salvare la stringa in formato XML?
__________________
In God we trust; all others bring data |
![]() |
![]() |
![]() |
#3 |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...ciao...
...hai indirettamente scoperto ci' che viene chiamato SQL Injection Attacks... ...formatta la query con un metodo simile a questo ed eventualmente trimma dagli spazzi i campi del resultset... ...ciao... Codice:
protected String format(String field) { if (field != null) { int rr = field.indexOf("'"); field = field.replaceAll("'", "''"); } return field; } |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
High Flying Sottovento PS. Codice:
if (field != null) { int rr = field.indexOf("'"); field = field.replaceAll("'", "''"); }
__________________
In God we trust; all others bring data |
|
![]() |
![]() |
![]() |
#5 |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...ciao...
....si l0index è assolutamente inutile...volevo vedere se eri attento...scherzo...anche il trim del result set non è importante per la risoluzione del tuo problema ma è utile per evitare problemi sui eventuali confronti... ...per quanto riguarda "l'attacco" non si fa altro che sfruttare questo finto bug sugli apici per modellare la query a nostro piacere... ...esempio... ...query = "select * from tabella where variabile = ' "+ valore +" ' "; ...ora se assegnamo alla variabile il valore ciccio' or '1' = '1 ci ritroveremmo una query così... ...query = "select * from tabella where variabile = 'ciccio' or '1' = '1' "; ...di conseguenza la query verrebbe corrotta ed estrarrebbe valori non richiesti...con le dovute modifiche la query puo' risultare veramente pericolosa... ...alla fine pero' basta un controllo sugli elementi che comporranno la nostra query per evitare problemi... ...ciao... |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Ok, quindi sta solo a vedere chi (e con quali intenzioni) ha messo l'apice nel campo della tabella di GiulioCesare, giusto?
Una domanda per GiulioCesare: quando hai provato a mettere il backslash davanti agli apici, immagino che tu abbia usato la replaceAll(). L'errore che faccio sempre e' quello di pensare che la replaceAll() cambi la stringa iniziale, per cui scrivo: myString.replaceAll ("'", "\\\\'"); salvo poi accorgermi che non succede niente. E' per caso quanto hai fatto? (Ovviamente era myString = myString.replaceAll ("'", "\\\\'"); High Flying Sottovento
__________________
In God we trust; all others bring data |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Apr 2004
Messaggi: 364
|
Purtroppo anche con il metodo provosto da ally, si presenta lo stesso problema, comunque posto qui la query come viene modificata dal metodo, per capire dov'è l'errore, guardate all'ultimo campo dove c'è un link all'interno di quel campo, a separare i due url c'è un apice, che è quello da il problema, infatti viene generato un errore di sintassi lì
Codice:
Insert into compagnia ( campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo,campo ) values (''1'',''CA'',''24 Sep 1980'',''Ce'',''S.P.A.'',''F.S.H..'',''Impiantica'',''999'',''32415'',''Fortgrup'',''5'',''VI'',''pippo@yahoo.it'',''P.I.A.'',''25Aug2005'',''A'',''A'',''1'',''1'',''03236870924'',''C'',''tr'',''(Impianti per centri elaborazionetesti)'',''587'',''1989'',''3'',''Gruppo'',''10400.00'',''0029-05-24'',''44324324'',''0'',''19 Feb 2006'',''S'',''60'',''19 Feb2002'',''20092423111'',''10400.00'',''200009240000237'',''S.P.A.'',''2002-02-07'',''128062'',''0034-11-23'',''90000000'',''INSERITO'',''Im piantica'',''Via Cascilina'',''<a href=''http://www.google.com''>http://www.google.com</a>'') |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:02.