webForumDet fria alternativet

Säkerheten, risk för problem?

ASP

6 svar · 326 visningar · startad av SannyW

Medlem sedan jan. 2003438 inlägg
Frågan#1

Undrar om någon ser några problem med säkerheten, använder idag access.

skickar ju in QueryStringen i tabellen och vill ju då inte att någon skall kunna komma åt den.

Finns där några problem eller något som jag borde tänka på i nedanstående.

Tack på förhand.

<%
strSida = Request.QueryString("m")

sql = "Select DISTINCT sida FROM tbl_meny WHERE sida='"& strSida &"'"

set rs = Conn.Execute (sql)
		do until rs.EOF

dim strSida
strSida = rs("sida") 

response.write " "& lcase(strSida)& " "

IF Request.QueryString("m") = lcase(strSida) THEN

	strU = Request.QueryString("u")
	strM = Request.QueryString("m")	

	select case strU
	  case "" 
	  %><!--#include file="inc_start_dagens.asp"--><% 
	  case "spelaretruppen" 
	  %><!--#include file="inc_start_planket.asp"--><%
	End select
END IF

rs.MoveNext
Loop
rs.Close
%>
Medlem sedan nov. 20018 492 inlägg
#2

För att få någon som helst säkerhet bör du till att börja med byta databas till t.ex MySQL istället för Access. Sen så kan du ju kolla upp också för att se så att strSida har något värde (If strSida <> "" Then).

Medlem sedan dec. 20003 563 inlägg
#3

Nja. Lägger du access-filen utanför webrooten är det en bra början.
Att sedan kontrollera emot sql-injections är nästan det allra viktigaste och även det enklaste att kontrollera.

Sök på sql injections här eller google så hittar du mycket info.

Medlem sedan jan. 2003438 inlägg
#4

Tack för svaren. Som det är nu så ligger access-filen i webrooten så det är ju bra. Får utveckla till tex MySql på sikt.

/ r ligger utanför givetivis

Angående sql injections borde jag nått problemet, har gjort om lite.

Skrik gärna till om det är något som är uppåt väggarna.

<%

Function escape(input)
	input = Replace(input, "'", "''")
	escape = input
End Function

sql = "Select DISTINCT sida FROM tbl_meny WHERE sida='" & escape(Request.QueryString("m")) & "'"

set rs = Conn.Execute (sql)
		do until rs.EOF

Dim strSida

strSida = rs("sida") 

response.write " "& lcase(strSida)& " "

IF Request.QueryString("m") = lcase(strSida) THEN

	strU = Request.QueryString("u")
	strM = Request.QueryString("m")	

	sql2 = "Select * FROM tbl_meny WHERE sida='" & escape(Request.QueryString("m")) & "' AND namn='" & escape(Request.QueryString("u")) & "' AND css='undermeny'"

       	set rs2 = Conn.Execute (sql2)
		do until rs2.EOF

	  strFilelink = rs2("link")

	response.write " "& strFilelink& " "

	
	rs2.MoveNext
	Loop

	IF strFilelink <> "" THEN

	select case strU
	  case "" 
	  server.execute "inc_start_planket.asp"
	  case else
	  server.execute ""& strFilelink& ""
	
	End select

	END IF

rs2.Close
END IF

rs.MoveNext
Loop
rs.Close
%>
Medlem sedan juni 200032 967 inlägg
#5

Förutom att du misslyckades med [kod]-taggarna ser det ganska bra ut. ;)

mvh

Medlem sedan dec. 2002841 inlägg
#6

Hejsan,

Jag tycker din kod ser säker ut. Jag har hittills inte hittat några "hål".

Lycka till!

Medlem sedan dec. 20003 563 inlägg
#7

Jag skrev skrev:

Lägger du access-filen utanför webrooten är det en bra början.

Du svarade skrev:

Som det är nu så ligger access-filen i webrooten så det är ju bra.

Det är tväremot vad jag menade.
Ligger den i wwwrooten kan man ladda ner databasen genom att skriva www.domän.top/databas.mdb vilket inte är så önskvärt.
Vad jag menade var att lägga den ovanför rooten i mapphiarkin.
Och rooten än c:\doman_com\wwwroot\index.asp så ska databasen ligga i c:\doman_com\ .
Många, vet inte hur långt ifrån alla, webbhotell har detta system och har ofta en egen mapp att lägga databaser i.

257 ms totalt · 3 externa anrop · v20260731065814-full.aa8cfc83
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)