51 messaggi dal 08 febbraio 2002
Ciao a tutti
Sto manutenendo del codice per un applicativo intranet scritto (ahimè) in classic asp. Per raddrizzare la parte di sicurezza dovevo scrivere del codice che evitasse i classici url injection poichè molto furbescamente l'applicativo passa parte dell'url nella querystring.

Ho scritto questa funzione :


Function FindPage(extendedUrl, redirect)

On Error Resume Next

dim straddr, url, protocol, status, virtualDir, rState

If extendedUrl = "" Then
FindPage = extendedUrl
Else

If Request.ServerVariables("HTTP_HOST") <> "" Then
straddr = Replace(Request.ServerVariables("HTTP_HOST"), "/", "")
Else
straddr = Replace(Request.ServerVariables("SERVER_NAME"), "/", "")
End If

virtualDir = Request.ServerVariables("PATH_INFO")
i = InStr(2, virtualDir, "/")

If i > 0 Then
virtualDir = Left(virtualDir, i - 1)
virtualDir = Replace(virtualDir, "/", "") & "/"
Else
virtualDir = ""
End If

protocol = LCase(Split(Request.ServerVariables("SERVER_PROTOCOL"), "/")(0))
url = protocol & "://" & straddr & "/" & virtualDir & extendedUrl

set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP.3.0")
xmlhttp.open "GET", url, false

xmlhttp.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
xmlhttp.setRequestHeader "Content-length", 0

xmlhttp.send

status = CInt(xmlhttp.Status)
rState = xmlhttp.readyState

If xmlhttp.readyState = 4 Then
If status >= 400 and status < 500 Then
FindPage = redirect
Else
FindPage = extendedUrl
End If
End If

set xmlhttp = nothing

End if

If err.Number <> 0 Then

Response.Write "<br><b>Errore in FindPage!</b><br>"
Response.Write "Description : " & err.Description & "<br>"
Response.Write "Error source : " & err.Source & "<br>"
Response.Write "Error number " & err.Number & "<br>"
Response.Write "Url : " & url & "<br>"
Response.Write "HTTP_HOST :" & Request.ServerVariables("HTTP_HOST") & "<br>"
Response.Write "SERVER_NAME :" & Request.ServerVariables("SERVER_NAME") & "<br>"
Response.Write "readyState : " & rState & "<br>"
Response.Write "Response Text : " & xmlhttp.responseText & "<br>"
Response.End

End If

End Function


che sul mio portatile funziona perfettamente, ma su server di test mi da questo errore :

Errore in FindPage!
Description : The data necessary to complete this operation is not yet available.
Error source : msxml3.dll
Error number -2147483638
Url : http://igsv9078/RichiesteIntervento/Tabelle/RichiesteIntervento/desktopElenco.asp
HTTP_HOST :igsv9078
SERVER_NAME :igsv9078
readyState : 1

Il mio portatile ha installato 7 con IIS 7.5, mentre su server c'è 2003 Server con IIS 6, non vorrei che con 2003 debba usare altri oggetti COM. Qualcuno ha qualche idea ?
Modificato da baltica il 21 giugno 2012 11.56 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.