Aqualong Skrevet 11. november 2007 Del Skrevet 11. november 2007 (endret) Jeg sliter med et problem når det gjelder amerikansk / europeisk format på desimaltall. Jeg får f.eks. et tall fra en variabel som kan være 2,50 eller et annet tall med desimaler adskilt med komma. Jeg har en INSERT INTO setning i VBA-koden min som skal putte dette og en del andre variabler inn i hver sine felter i en tabell. Når koden kommer til dette feltet, så oppfatter MS SQL dette som 2 felter pga. kommaet. Jeg tror jeg har prøvd alt mulig for å få variablen til å inneholde punktum i stedet for komma, men får det ikke til. Jeg har også satt inn "'" foran og etter variablen, men da oppfatter MS SQL dette som en varchar, og kan ikke konvertere til Decimal eller Numeric. Noen som har noen tips her? Takk. Endret 11. november 2007 av Aqualong Lenke til kommentar
Manfred Skrevet 11. november 2007 Del Skrevet 11. november 2007 Hvorfor kan du ikke bare ta en replace i scriptet ditt som bytter ut , i verdien til . da? Lenke til kommentar
Aqualong Skrevet 11. november 2007 Forfatter Del Skrevet 11. november 2007 Hvorfor kan du ikke bare ta en replace i scriptet ditt som bytter ut , i verdien til . da? Joda, det kan jeg selvfølgelig gjøre, og da virker det. Tenkte ikke på det i det hele tatt, hadde kjørt meg helt fast. Takk skal du ha! Lenke til kommentar
kaffenils Skrevet 12. november 2007 Del Skrevet 12. november 2007 Jeg sliter med et problem når det gjelder amerikansk / europeisk format på desimaltall. Jeg får f.eks. et tall fra en variabel som kan være 2,50 eller et annet tall med desimaler adskilt med komma. Jeg har en INSERT INTO setning i VBA-koden min som skal putte dette og en del andre variabler inn i hver sine felter i en tabell. Når koden kommer til dette feltet, så oppfatter MS SQL dette som 2 felter pga. kommaet. Jeg tror jeg har prøvd alt mulig for å få variablen til å inneholde punktum i stedet for komma, men får det ikke til. Jeg har også satt inn "'" foran og etter variablen, men da oppfatter MS SQL dette som en varchar, og kan ikke konvertere til Decimal eller Numeric.Noen som har noen tips her? Takk. Det er fordi du ikke bruker paramereriserte spørringer. Da slipper du slike problemer, i tillegg til at du sikere deg mot SQL-injections. ALDRI bygg opp SQL statements på den måten du gjør. Bruk ALLTID parametre. Ikke ta snarveien som manfred foreslår. Bygg istedet om alle spørringene dine til å benytte seg av parametre. Lenke til kommentar
Manfred Skrevet 12. november 2007 Del Skrevet 12. november 2007 Tja.. Det var da å ta i, vil jeg si. Det er fullt mulig å validere input uten å bruke parameteriserte spørringer. Lenke til kommentar
roac Skrevet 12. november 2007 Del Skrevet 12. november 2007 Det er mulig å bruke tid å krefter på å lage en validering, selv om det allerede er metoder som gjør dette for deg ja. Men best practice er og forblir (som kaffenils korrekt sier) å ALLTID brukere parametriserte kall. Dynamisk SQL er en voksen kilde til potensielle feil og/eller sikkerhetshull. Hvis du betviler dette så kan jeg som MCT anbefale deg å ta en liten titt i Designing Security for SQL Server 2005, og da i særdeleshet modul 6. Lenke til kommentar
Manfred Skrevet 12. november 2007 Del Skrevet 12. november 2007 Jeg har ikke sagt jeg betviler det, men jeg mener også at i mange tilfeller vil det være overkill. Lenke til kommentar
kaffenils Skrevet 12. november 2007 Del Skrevet 12. november 2007 (endret) Jeg har ikke sagt jeg betviler det, men jeg mener også at i mange tilfeller vil det være overkill. Et par (en i .Net) kodelinjer ekstra pr. parameter er overkill? Har folk så slapp holdning til dette? Jeg er DYPT sjokkert! Edit: Har du tatt noen slike snarveier på websidene dine? Endret 12. november 2007 av kaffenils Lenke til kommentar
kaffenils Skrevet 12. november 2007 Del Skrevet 12. november 2007 (endret) Jeg har ikke sagt jeg betviler det, men jeg mener også at i mange tilfeller vil det være overkill. Måtte bare teste medlemsweb.no. Du bruker IKKE parametrer og har istedet laget din egen validator som bl.a. fjerner ' fra input (Ja jeg prøvde). Da har du i alle fall fjernet den enkleste SQL-Injection metoden for SQL Server. Litt stilig at du viser INSERT statementet på siste siden INSERT INTO Customers(name, address1, address2, zip, city, email, mobile, phone, fax, OrgNo, password, medlemsweb) VALUES('--', '--', '--', '4444', 'gfhfg', '[email protected]', 99999999, --', --', '', '88888888--'', 1); SELECT CAST(scope_identity() AS int) Får håpe du ikke anmelder meg nå for forsøk på innbrudd :!: :!: Endret 12. november 2007 av kaffenils Lenke til kommentar
Manfred Skrevet 12. november 2007 Del Skrevet 12. november 2007 Der testet du en side som fortsatt bare er under utprøving... Den spytter ut sql'en på grunn av debug... Jeg jobber med andre prosjekter om dagen, så jeg har ikke hatt tid til å se noe mer på den. Men jeg kan vel fjerne sql'en fra siste siden uansett (btw, så holder det ikke å inserte i den tabellen der. Du får ikke opprettet noen brukerkonto i "Customers" Lenke til kommentar
kaffenils Skrevet 12. november 2007 Del Skrevet 12. november 2007 Der testet du en side som fortsatt bare er under utprøving... Den spytter ut sql'en på grunn av debug... Jeg jobber med andre prosjekter om dagen, så jeg har ikke hatt tid til å se noe mer på den. Men jeg kan vel fjerne sql'en fra siste siden uansett (btw, så holder det ikke å inserte i den tabellen der. Du får ikke opprettet noen brukerkonto i "Customers" Jeg var ikke interessert i å opprette noen konto, kun å se om websiden din hånderte den vanligste "inngangsportalen" for SQL-injections, nemlig via tekstinput ved å terminere en streng med ' (enkelfnutt) , deretter legge til egen SQL og til slutt å kommentere ut resten av din SQL med -- Lenke til kommentar
Manfred Skrevet 12. november 2007 Del Skrevet 12. november 2007 Jau. Jeg fjerner i alle fall fnutter Lenke til kommentar
roac Skrevet 12. november 2007 Del Skrevet 12. november 2007 Vel, jeg synes det å fjerne alle fnutter er en uting. Det er få tilfeller at det er noe problem, men når det ikke er behov for dette når ting gjøres riktig så blir det bare for dumt. Et par eksempler: Peter O'Tool prøver å registrereseg som bruker En person prøver å skrive inn gateadressen "Tarjei Vesaas' vei 5" Det finnes andre eksempler også. Klart, de intreffer ikke ofte, men du endrer på korrekte data for å unngå noe du i utganspunktet burde ha løst på en annen måte. Lenke til kommentar
Manfred Skrevet 12. november 2007 Del Skrevet 12. november 2007 Normalt sett erstatter jeg ' med ' for det skal uansett ut på web Lenke til kommentar
roac Skrevet 12. november 2007 Del Skrevet 12. november 2007 Oh, obscurity. Hvor lekkert. Helt til den dagen to løsnigner skal samkjøres, eller du skal teste data opp mot hverandre. For all del, funker sikkert greit i enkle webløsninger, og plutselig en dag ender du opp med å lage noe seriøst, og får trøbbel fordi du har køddet til dataene. Og det er ikke spesielt kuult, tro meg Lenke til kommentar
Manfred Skrevet 13. november 2007 Del Skrevet 13. november 2007 Jeg jobber mye med større prosjekter, men jeg har bare blitt vant til, fra starten av, å validere all inputen min selv Kall det gjerne en uvane, og muligens noe jeg bør rette opp, men jeg har til dags dato ikke hatt noen problemer. (Annet enn når j0rn79 koste seg med sql injection på en ikke helt ferdig webside ) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå