Kom ihåg mig?
Home Menu

Menu


Filtrera SQL-Injections...

Ämnesverktyg Visningsalternativ
Oläst 2008-10-21, 23:21 #1
Staffconsulting Staffconsulting är inte uppkopplad
Flitig postare
 
Reg.datum: May 2004
Inlägg: 358
Staffconsulting Staffconsulting är inte uppkopplad
Flitig postare
 
Reg.datum: May 2004
Inlägg: 358
Jag filtrerar följande :

text = Replace(text,"'","")
text = Replace(text,";","")
text = Replace(text,"xp_","")
text = Replace(text,"--","")
text = Replace(text,"and ","")
text = Replace(text," or ","")
text = Replace(text,"delete","")
text = Replace(text,"0x3a","")

Missat något?
Staffconsulting är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-10-21, 23:36 #2
WizKid WizKid är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Apr 2004
Inlägg: 618
WizKid WizKid är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Apr 2004
Inlägg: 618
får man inte skriva "and"?

I PHP använder jag mysql_real_escape_string så escapear \x00, \n, \r, \, ', " and \x1a
WizKid är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-10-21, 23:55 #3
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
mysql_real_escape_string anropar MySQL:s klientbibliotek för att skydda dig mot injektioner. Det är troligtvis betydligt säkrare än att själv försöka filtrera olika tecken.

Varför du överhuvudtaget skulle behöva filtrera ord som "and" och "delete" förstår jag inte. Hur ska man då kunna diskutera fåglar eller skriva på engelska?
emilv är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-10-22, 00:11 #4
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
Varför tillåter du input i dina sql-satser? Enda stället jag kan komma på när det är nödvändigt är ju tex sökningar och då kan du ju enkelt filtrera bort alla tecken utom a-z0-9 + lite extra med ett regexp.

Kod:
$filtered = preg_replace("/[^a-z0-9]/","",$input);
grazzy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-10-22, 00:26 #5
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
Citat:
Originally posted by grazzy@Oct 22 2008, 00:11
Varför tillåter du input i dina sql-satser? Enda stället jag kan komma på när det är nödvändigt är ju tex sökningar och då kan du ju enkelt filtrera bort alla tecken utom a-z0-9 + lite extra med ett regexp.
Kod:
filtered = preg_replace/^a-z0-9/,,input;
Han kanske inte vill använda PDO och liknande bibliotek av prestandaskäl?
emilv är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-10-22, 00:59 #6
dotvoid dotvoid är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 199
dotvoid dotvoid är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 199
Om man undviker PDO av prestandaskäl tror jag man är lite snett ute. Om man trots allt inte vill använda PDO finns som ovan nämnts utmärkta mysql_real_escape_string() samt motsvarande för de andra databasinterfacen.

Man ska inte filtrera text själv. Det är väldigt bökigt att helt filtrera alla varianter med olika escape-tecken, hex-tecken etc. Text är svårfiltrerad. Däremot ska man alltid kontrollera alla strukturerade fält som valuta, nummer, person-nummer, datum etc. Där kan man ju enkelt sätta upp enkla och koncisa filter-regler.

Dessutom är jag tveksam till att förändra input-värden. Om där finns saker som inte ska in i databasen bör man väl anse att all data från källan är att anse som dubiös och icke önskvärd. Då bör man väl hellre felhantera än lägga in skräp i databasen. Bad practice!
dotvoid är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-10-22, 01:51 #7
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
Har man såpass problem med prestanda att man inte kan köra ett regexp är jag skeptisk till att man använder en relationsdatabas..
grazzy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-10-22, 11:33 #8
Fruitness Fruitness är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2008
Inlägg: 17
Fruitness Fruitness är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2008
Inlägg: 17
Hej,

Ser ut som VBScript/ASP? Isåfall är det väl utmärkt om du använder (ADO) Command-objektet tillsammans med parametrar så slipper du oroa dig om vad du ska filtrera bort.
Fruitness är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-10-22, 13:42 #9
Staffconsulting Staffconsulting är inte uppkopplad
Flitig postare
 
Reg.datum: May 2004
Inlägg: 358
Staffconsulting Staffconsulting är inte uppkopplad
Flitig postare
 
Reg.datum: May 2004
Inlägg: 358
Jo det är gammal hederlig ASP 3.0, kunden har en inloggningsruta där det förut var möjligt att göra lite kul saker med SQL-databasen...

jag har max 1 timme att lägga ner på detta så jag gjorde det enklaste jag kom på, replace...

Command objektet och parametrar brukar jag använda själv faktiskt...

Men det ser ok ut??
Staffconsulting är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 12:45.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017