Kun tal fra streng?

Tags:    asp

Hej udviklere..

Jeg sidder og arbejde med en hjemmeside, hvor jeg skal have siderne til at ligge i en database, men jeg vil gerne undgå at folk vil ødlægge det hele ved brug af sql injection, så er der en måde hvorpå jeg kan fjerne alle bogstaver og tegn i en streng, altså sortere alt andet en tal (int værdier) ud?

For hvis den kan sortere det hele fra, undtagen selve tallet der bliver skrevet, er man ligesom ude over det problem ;)



8 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Yeah, det er jo også derfor den ikke duer ;)

Er der ikke andre der har en løsning?


Du kan prøve med

if not IsNumeric(variabel) then
.....
else
.....
end if

Det er dog min erfaring, at SQL-injections foregår mest ved at prøve at indsætte apostroffer (') i parameterfelter (input felter i din webform). Disse undgår du ved f.eks. at anvende

replace(variabel, "'", "") eller
replace (variabel, "'", "''")

Det bedste er nok at anvende sql - input parametre, der skal typeerklæres først. Dette er nok det mest sikre, men også det mest besværlige :-)




Jeg har prøvet med ASP's cInt() (convert to integer) og den almindeligt Int (ingeger) men igen af dem virker.. De siger bare Type Mismatch når jeg prøver :S


Jeg er meget sikker på at du ved hvordan funktionen virker, men du får lige et link anyway

http://www2.psacake.com:81/web/functions.asp?id=5



I PHP ved jeg at du kan caste en streng til at være en int på følgende måde:

$id = (int) $_GET['id'];

Så jeg vil tro der er noget i ASP i samme stil.



Jeg har prøvet med ASP's cInt() (convert to integer) og den almindeligt Int (ingeger) men igen af dem virker.. De siger bare Type Mismatch når jeg prøver :S



Yeah, det er jo også derfor den ikke duer ;)

Er der ikke andre der har en løsning?



Yeah, det er jo også derfor den ikke duer ;)

Er der ikke andre der har en løsning?


UPS, jeg glemte:

Grunden til at Cint() ikke virker er fordi det er en "type cast" og du kan ikke type caste en alfanumerisk værdi til en integer. Selv om du godt kan type caste en integer til alfanumerisk. Den går desværre ikke begge veje.



Well, du kan teknisk set også lave en sql injection kun med tekst.. hvis man ikke søger med " ' " i sin kode, kan man bare lave et lille mellemrum efter tallet, og skrive "UNION ALL" og derefter hvad man vil lave af ulykker ;)

Jeg prøver lige med isnumeric()



Thanks, worked :P

point til dig ;)



t