FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Flitig postare
|
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? |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Mycket flitig postare
|
får man inte skriva "and"?
I PHP använder jag mysql_real_escape_string så escapear \x00, \n, \r, \, ', " and \x1a |
||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Bara ett inlägg till!
|
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? |
|||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Klarade millennium-buggen
|
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); |
||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Bara ett inlägg till!
|
Citat:
|
|||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Medlem
|
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! |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Klarade millennium-buggen
|
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..
|
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Nykomling
|
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. |
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Flitig postare
|
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?? |
||
![]() |
![]() |
Svara |
|
|