23. august 2009 - 16:14
#13
Du kan undersøge dine request (querystring og forms) ved at lave et simpelt "filter", og evt. anvende det som en inkluderet fil på de sider der er behov for det. Ønskes der flere regler end i de viste, tilføjes de som det passer dig.
Eksempler:
<%
'Dette er vores filter
Private Function formaterInput(ByVal strInputEntry)
strInputEntry = Replace(strInputEntry, "[", "[", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "]", "]", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "<", "<", 1, -1, 1)
strInputEntry = Replace(strInputEntry, ">", ">", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "\'", "\'", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "'", "", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "=", "=", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "select", "select", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "join", "join", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "union", "union", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "where", "where", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "insert", "insert", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "delete", "delete", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "update", "update", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "like", "like", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "drop", "drop", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "create", "create", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "modify", "modify", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "rename", "rename", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "alter", "alter", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "cast", "cast", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "convert", "convert", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "sysobjects", "sysobjects", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "db_name", "db_name", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "^", "", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "declare", "declare", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "set", "set", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "exec", "exec", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "values", "values", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "where", "where", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "view", "vieew", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "merge", "merge", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "truncate", "truncate", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "trigger", "trigger", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "script", "", 1, -1, 1)
formaterInput = strInputEntry
End Function
'--------------------------------------------------------
'Her henter vi noget fra en QueryString og laver den til en varibel...
Dim MinStreng
MinStreng = Request.Querystring("MinStreng")
MinStreng = formaterInput(MinStreng)
'Udskriv strengen
Response.Write("Dette er min variabel/streng:" & MinStreng)
'--------------------------------------------------------
'Formular eksempel (samme princip blot med Request.Form)
Dim MinFormStreng
MinFormStreng = Request.Form("MinFormStreng")
MinFormStreng = formaterInput(MinFormStreng)
'Udskriv formdata
Response.Write("Dette er min variabel/streng fra formularen:" & MinFormStreng)
'--------------------------------------------------------
'Laves der opslag i en database via et nummerisk ID, kan der med fordel checkes for nummeriske data og lige trimme data i samme moment!
'Hent data (som eksempel øverst via querystring)
Dim ID
'Trimmer id´et og begrænser antallet af tegn til max 10
ID = Trim(Mid(Request.Querystring("id"), 1, 10))
'Checker input for "SQL-grimme" input
ID = formaterInput(ID)
'Undersøg om input indeholder data efter vi har ryddet ud i koden og ligeledes om input består af nummeriske data
If ID <> "" AND IsNumeric(ID) Then
Response.Write("ID er OK og lig med:" & ID)
else
Response.Write("Id er ikke gyldigt - yderligere handlingere afbrydes...")
Response.End
Response.Flush
End If
%>
Håber det kan bruges! :O)