webForumDet fria alternativet

Söka med '

ASP

40 svar · 1 401 visningar · startad av Lorelie

Medlem sedan juni 2005264 inlägg
Frågan#1

På min sida har jag en sökfunktion som inte kan söka med ' i namnet, hur gör man för att det ska gå att göra? (https://www.aramennoc.se - > databasen)

Medlem sedan juni 20019 519 inlägg
#2
sok = request.form("text")
sok = replace(sok,"'","''')

sök på SQL Injections på detta forum så får du svar

Medlem sedan juni 2005264 inlägg
#3

Har tittat runt lite, men hittar bara att man ska byta ut och säkra och grejja, jag vill kunna söka med ', tex namnet Hagens O'Boy går inte att söka på, då blir det felmeddelanden.

Medlem sedan juni 20019 519 inlägg
#4

Det gör du ju

exempel:

sok = "O'Boy"

function secureText(str)
  secureText= replace(str,"'","''')
end function

SQL = "Select * From något where sokord = '" & secureText(sok) &"'".....

skapar en (eller använd en av SQL injection exempel för färdiga funktioner)

Då i SQL bryter du en sträng med ':

Om vi inte har SQLinjection skyddet:

SELECT * FROM något WHERE Sokord = 'O'boy'

3 st ' i en SQL är aldrig bra ' måste gå jämt ut ... medans Skyddet ger:

SELECT * FROM något WHERE Sokord = 'O''boy'

men SQL tolkar ' = som en "text '" dvs den bryter inte sök strängen... och därför får man inget fel meddelande.

Medlem sedan juni 2005264 inlägg
#5

Nu tar vi det från början, jag kan inte jättemycket om sånt här :OO


Function SafeSQL(strText)
    SafeSQL = Replace(Replace(strText, "\", "\\"), "'", "\\'")
End Function

....

SQL = 	"SELECT 	namn,	" & _
	"hast_id,		" & _
	"bild_url		" & _
	"FROM 	hast 	" & _
	"WHERE 		kon = '"& Request.Form("kon")&"' 	      " & _
	"AND 		namn  like  '" & Request.Form("hast")&"%'  " & _
	"And		namn  like  '" & secureText(hast)&"%'	      " & _
	"AND 		namn  <>	  'e'		                   " & _
	"AND		namn  <>	  'u'			      " & _
	"AND		namn  <>	  '&nbsp;'		                   " & _
	"AND		ras     <>	   'Övrig'			      " & _
	"AND 		ras      =	   'Connemara'		       " & _
	"ORDER BY 	namn				        "

Jag har gjort något fel, men vad :l

Medlem sedan juni 20019 519 inlägg
#6

är din variabel hast något?

annars:

.. secureText(Request.Form("hast") ...
osv...
där alla dina Request.forms är ska secureText också vara :D

Medlem sedan juni 20019 519 inlägg
#7

Såg ett annat fel...

Den heter inte SecureText ditt skydd utan SafeSQL :D

Medlem sedan juni 20019 519 inlägg
#8
SQL = 	"SELECT 	namn,	" & _
	"hast_id,		" & _
	"bild_url		" & _
	"FROM 	hast 	" & _
	"WHERE 		kon = '"& SafeSQL(Request.Form("kon")) &"' 	      " & _
	"AND 		namn  like  '" & SafeSQL(Request.Form("hast"))&"%'  " & _
	"AND 		namn  <>	  'e'		                   " & _
	"AND		namn  <>	  'u'			      " & _
	"AND		namn  <>	  '&nbsp;'		                   " & _
	"AND		ras     <>	   'Övrig'			      " & _
	"AND 		ras      =	   'Connemara'		       " & _
	"ORDER BY 	namn				        "
Medlem sedan juni 2005264 inlägg
#9

have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'B%' AND namn <> 'e' AND namn <> '
/connemara_hittat.asp, line 38

Blir det när jag skriver det du skrev sist

Medlem sedan juni 20019 519 inlägg
#10

secureText Request.Form("hast")

måste ha () i din funktion... men secureText finns ju inte ;) det är SafeSQL

Medlem sedan juni 2005264 inlägg
#11

varför är det % bakom ena Request.Formen men inte bakom den andra?

Medlem sedan juni 20019 519 inlägg
#12

i SQL så med like är % kan träffas framför eller bakom en sträng(konstigt skrivit sorry)

men du har skrivit nu att din sträng måste börja med det som står i request.form("hast") men den kan även innehålla något annat:

vi har en häst som heter Voigtan
om du skriver in voi så träffar du voigtan.. om du skriver "ta" så kommer du inte hitta Voigtan...

Bättre förklarat:
http://www.sql-tutorial.net/SQL-LIKE.asp

Medlem sedan juni 2005264 inlägg
#13

Det stämmer ja. Och skriver man "%ta" så kommer man hitta Voigtan .

Medlem sedan juni 2005264 inlägg
#14

Det funkar inte, vad är fel?

Error Type:
ADODB.Recordset.1 (0x80004005)
SQLState: 4 Native Error Code: 1064 [TCX][MyODBC]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'b%' AND namn <> 'e' AND namn
/connemara_hittat.asp, line 39

Browser Type:

Har skrivit den koden du skickade

Medlem sedan dec. 20025 483 inlägg
#15

Skriv gärna ut SQL-frågan så kan det bli lättare att upptäcka fel:

response.write SQL
response.end
Medlem sedan juni 2005264 inlägg
#16

Peter S skrev:

Skriv gärna ut SQL-frågan så kan det bli lättare att upptäcka fel:

response.write SQL
response.end

Nu hände ingenting... Eller jo, bakgrundsfärgen kom upp, men ingen text

Medlem sedan dec. 20025 483 inlägg
#17

Lägg koden precis under voigtann1:s kod från inlägg #8.

Medlem sedan juni 2005264 inlägg
#18

Peter S skrev:

Lägg koden precis under voigtann1:s kod från inlägg #8.

Då blev det

SELECT namn, hast_id, bild_url FROM hast WHERE kon = 'Valack' AND namn like 'Hagens O\\'Boy%' AND namn <> 'e' AND namn <> 'u' AND namn <> ' ' AND ras <> 'Övrig' AND ras <> 'Okänd' AND ras = 'Connemara' ORDER BY namn

Då sitter felet här någonstans?


Function SafeSQL(strText)
    SafeSQL = Replace(Replace(strText, "\", "\\"), "'", "\\'")
End Function
Medlem sedan juni 20019 519 inlägg
#19
Function SafeSQL(strText)
    SafeSQL = Replace(Replace(strText, "\", "\\"), "'", "''")
End Function

prova det..

Medlem sedan juni 2005264 inlägg
#20

voigtann1 skrev:

Function SafeSQL(strText)
    SafeSQL = Replace(Replace(strText, "\", "\\"), "'", "''")
End Function

prova det..

:e Funkar kanon!

Tur att det finns folk som orkar förklara för oss som är lite okunniga (y)

265 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)