[ASP]Mettere in sicurezza codice invio ordine

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4457
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

[ASP]Mettere in sicurezza codice invio ordine

Messaggio da UbuNuovo »

Premetto che non conosco ASP.
A un amico, che ha un vecchio sito statico su piattaforma Windows, bucano regolarmente il sito, inserendo pagine ASP e modificando le pagine html.
Come detto le pagine sono statiche, c'è un javascript presente in una sola pagina che serve per il precaricamento delle immagini e un javascript per i calcoli dell'importo.
Ho pensato che l'unico punto debole potesse essere il modulo d'ordine.
Googolando, non ho trovato pagine molto chiare sul problema sicurezza, ho aggiunto questo codice per ogni elemento 'Server.HTMLEncode(trim(Request.Form(...' sperando di migliorare la sicurezza.
Secondo voi questo codice è vulnerabile?
Se si, come metterlo in sicurezza?
Grazie per qualsiasi dritta.

Codice: Seleziona tutto

<%@ Language=VBScript %>
<%

' provo i campi obbligatori
If ((trim(Request.Form("nome")) = "") Or (trim(Request.Form("cognome") = "")) Or (trim(Request.Form("email") = ""))) Then 
		Response.Redirect ("/frame-page-error.htm")
	else 
		strNome = Server.HTMLEncode(trim(Request.Form("nome")))
		strCognome = Server.HTMLEncode(trim(Request.Form("cognome")))
		strVia = Server.HTMLEncode(trim(Request.Form("via/piazza")))
		strNumCivico = Server.HTMLEncode(trim(Request.Form("numero civico")))
		strCAP = Server.HTMLEncode(trim(Request.Form("CAP.")))
		strCity = Server.HTMLEncode(trim(Request.Form("city")))
		strProvincia = Server.HTMLEncode(trim(Request.Form("Provincia")))
		strTelefono = Server.HTMLEncode(trim(Request.Form("telefono")))
		strEmail = Server.HTMLEncode(trim(Request.Form("email")))
		strPiva = Server.HTMLEncode(trim(Request.Form("partita IVA")))
		strPagamento = Server.HTMLEncode(trim(Request.Form("pagamento")))
		
		strCod_art_1 = Server.HTMLEncode(trim(Request.Form("cod_art_1")))
		strCod_art_2 = Server.HTMLEncode(trim(Request.Form("cod_art_2")))
		strCod_art_3 = Server.HTMLEncode(trim(Request.Form("cod_art_3")))
		strCod_art_4 = Server.HTMLEncode(trim(Request.Form("cod_art_4")))
		strCod_art_5 = Server.HTMLEncode(trim(Request.Form("cod_art_5")))
		strCod_art_6 = Server.HTMLEncode(trim(Request.Form("cod_art_6")))
		
		strDesc_art_1 = Server.HTMLEncode(trim(Request.Form("desc_art_1")))
		strDesc_art_2 = Server.HTMLEncode(trim(Request.Form("desc_art_2")))
		strDesc_art_3 = Server.HTMLEncode(trim(Request.Form("desc_art_3")))
		strDesc_art_4 = Server.HTMLEncode(trim(Request.Form("desc_art_4")))
		strDesc_art_5 = Server.HTMLEncode(trim(Request.Form("desc_art_5")))
		strDesc_art_6 = Server.HTMLEncode(trim(Request.Form("desc_art_6")))
		
		strPezzi_art_1 = Server.HTMLEncode(trim(Request.Form("pezzi_art_1")))
		strPezzi_art_2 = Server.HTMLEncode(trim(Request.Form("pezzi_art_2")))
		strPezzi_art_3 = Server.HTMLEncode(trim(Request.Form("pezzi_art_3")))
		strPezzi_art_4 = Server.HTMLEncode(trim(Request.Form("pezzi_art_4")))
		strPezzi_art_5 = Server.HTMLEncode(trim(Request.Form("pezzi_art_5")))
		strPezzi_art_6 = Server.HTMLEncode(trim(Request.Form("pezzi_art_6")))
		
		strImp_unit_art_1 = Server.HTMLEncode(trim(Request.Form("imp_unit_art_1")))
		strImp_unit_art_2 = Server.HTMLEncode(trim(Request.Form("imp_unit_art_2")))
		strImp_unit_art_3 = Server.HTMLEncode(trim(Request.Form("imp_unit_art_3")))
		strImp_unit_art_4 = Server.HTMLEncode(trim(Request.Form("imp_unit_art_4")))
		strImp_unit_art_5 = Server.HTMLEncode(trim(Request.Form("imp_unit_art_5")))
		strImp_unit_art_6 = Server.HTMLEncode(trim(Request.Form("imp_unit_art_6")))
		
		strImp_tot_art_1 = Server.HTMLEncode(trim(Request.Form("imp_tot_art_1")))
		strImp_tot_art_2 = Server.HTMLEncode(trim(Request.Form("imp_tot_art_2")))
		strImp_tot_art_3 = Server.HTMLEncode(trim(Request.Form("imp_tot_art_3")))
		strImp_tot_art_4 = Server.HTMLEncode(trim(Request.Form("imp_tot_art_4")))
		strImp_tot_art_5 = Server.HTMLEncode(trim(Request.Form("imp_tot_art_5")))
		strImp_tot_art_6 = Server.HTMLEncode(trim(Request.Form("imp_tot_art_6")))
		
		strTotale_merce = Server.HTMLEncode(trim(Request.Form("totale_merce")))
		strSpese_spedizione = "16.00"
		strTotale_ordine = Server.HTMLEncode(trim(Request.Form("totale_ordine")))
		
		strDatiUtente = "<b>Dati Utente:</b><br><br>" & vbcrlf & strNome & " " & strCognome & "<br>" & vbcrlf & strVia & " n." & strNumCivico & "<br>" & vbcrlf & strCity & " - " & strCAP & " (" & strProvincia & ")<br>" & vbcrlf & "Tel: " & strTelefono & "<br>" & vbcrlf & "<a href=""mailto:" & strEmail & """>" & strEmail & "</a><br>" & vbcrlf & "P.iva: " & strPiva & "<br><br>" & vbcrlf 
		
		body = "<b><i>Non rispondere a questa email! Per le comunicazioni scrivere a <a href=""mailto:xxx@xxxx.it"">xxx@xxxx.it</a> o telefonare al numero 123456789 </i></b><hr width=""50%"" align=""center""><br><br>" & vbcrlf 
		
		body = body & "Ordine inviato da (nome cognome, email): <b>" & strNome & " " & strCognome & " , " &"<a href=""mailto:" & strEmail & """>" & strEmail & "</a></b> alle ore " & FormatDateTime(Now(),vbShortTime) & " del " & Date() & "<br><br>" & vbcrlf
		
		body = body & "<b>Articolo 1 : </b><br>Codice: <b>" & strCod_art_1 & "</b> - Descrizione: <b>" & strDesc_art_1 & "</b><br>" & vbcrlf & "Quantit&agrave;: <b>" & strPezzi_art_1 & "</b> - Costo Unitario :<b> &euro; " & strImp_unit_art_1 & "</b> ----> Totale: <b>&euro; " & strImp_tot_art_1 & " </b><br><br>" & vbcrlf
		
		body = body & "<b>Articolo 2 : </b><br>Codice: <b>" & strCod_art_2 & "</b> - Descrizione: <b>" & strDesc_art_2 & "</b><br>" & vbcrlf & "Quantit&agrave;: <b>" & strPezzi_art_2 & "</b> - Costo Unitario :<b> &euro; " & strImp_unit_art_2 & "</b> ----> Totale: <b>&euro; " & strImp_tot_art_2 & " </b><br><br>" & vbcrlf
		
		body = body & "<b>Articolo 3 : </b><br>Codice: <b>" & strCod_art_3 & "</b> - Descrizione: <b>" & strDesc_art_3 & "</b><br>" & vbcrlf & "Quantit&agrave;: <b>" & strPezzi_art_3 & "</b> - Costo Unitario :<b> &euro; " & strImp_unit_art_3 & "</b> ----> Totale: <b>&euro; " & strImp_tot_art_3 & " </b><br><br>" & vbcrlf
		
		body = body & "<b>Articolo 4 : </b><br>Codice: <b>" & strCod_art_4 & "</b> - Descrizione: <b>" & strDesc_art_4 & "</b><br>" & vbcrlf & "Quantit&agrave;: <b>" & strPezzi_art_4 & "</b> - Costo Unitario :<b> &euro; " & strImp_unit_art_4 & "</b> ----> Totale: <b>&euro; " & strImp_tot_art_4 & " </b><br><br>" & vbcrlf
		
		body = body & "<b>Articolo 5 : </b><br>Codice: <b>" & strCod_art_5 & "</b> - Descrizione: <b>" & strDesc_art_5 & "</b><br>" & vbcrlf & "Quantit&agrave;: <b>" & strPezzi_art_5 & "</b> - Costo Unitario :<b> &euro; " & strImp_unit_art_5 & "</b> ----> Totale: <b>&euro; " & strImp_tot_art_5 & " </b><br><br>" & vbcrlf
		
		body = body & "<b>Articolo 6 : </b><br>Codice: <b>" & strCod_art_6 & "</b> - Descrizione: <b>" & strDesc_art_6 & "</b><br>" & vbcrlf & "Quantit&agrave;: <b>" & strPezzi_art_6 & "</b> - Costo Unitario :<b> &euro; " & strImp_unit_art_6 & "</b> ----> Totale: <b>&euro; " & strImp_tot_art_6 & " </b><br><br>" & vbcrlf
		
		
		body = body & "Totale merce<b>: &euro; " & strTotale_merce & "</b> - Spese di Spedizione:<b>&euro; " & strSpese_spedizione & "</b> ----> Totale Ordine: <b>&euro; " & strTotale_ordine & " </b><br><br>" & vbcrlf
		
		body = body & "Modalit&agrave; di pagamento:<b> " & strPagamento & "</b><br><br>" & vbcrlf
				
		body = body & strDatiUtente & "<br><br>" & vbcrlf
		
		body = body & "<b><i>Grazie per aver effettuato l'ordine.</i></b><br><br>" & vbcrlf

End If

'For each sRequest in Request.Form
'	If ((sRequest <> "subject") And (sRequest <> "nome") And (sRequest <> "cognome") And (sRequest <> "email") And (sRequest <> "via/piazza") And (sRequest <> "numero civico")  And (sRequest <> "CAP.") And (sRequest <> "city") And (sRequest <> "Provincia") And (sRequest <> "telefono") And (sRequest <> "partita IVA") And (sRequest <> "email_to") And (sRequest <> "email_from") And (sRequest <> "email_bcc") And (sRequest <> "redirect") And (sRequest <> "pagamento") And (sRequest <> "Invia ordine")) Then 
'		If ((trim(Request.Form(sRequest)) <> "") And (trim(Request.Form(sRequest)) <> "0")) Then
'			body = body & vbcrlf & sRequest & ": <b>" & Request.Form(sRequest)&"</b><br><br>" & vbcrlf
'		End If
'	End If
'Next



'invio email
Set objMail  = Server.CreateObject("CDONTS.NewMail")
body = "<html><font face=arial size=2>"+body+"</font></html>"

objMail.BodyFormat = 0 
objMail.MailFormat = 0
objMail.To = Request("email_to") & ";" & Request("email")
objMail.From = Request("email_from")
objMail.Bcc = Request("email_bcc")
objMail.Subject  = Request("subject")
objMail.Body = body
objMail.importance  = 2
objMail.Send
Set objMail = nothing
Response.Redirect (Request("redirect"))
%>
Salva l'Ucraina! 🇺🇦
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [ASP]Mettere in sicurezza codice invio ordine

Messaggio da Zoff »

Non è detto che sia il codice ad essere vulnerabile.
Il server utilizza una vergine di Windows con aggiornamento di sicurezza attivo e all'ultima versione?
Vale a dire almeno Windows server 2008 o ansia vista.
Vanno inoltre verificato gli aggiornamenti di IIS e la configurazione dei servizi (es. ftp)
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4457
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: [ASP]Mettere in sicurezza codice invio ordine

Messaggio da UbuNuovo »

Queste sono cose che non posso sapere, naturalmente loro dicono che il loro server è a postissimo e aggiornatissimo!
Tanto a posto che in questi ultimi due giorni, è andato down 3 volte. :devilmad:
Se mi dite che quel codice può ritenersi ragionevolmente sicuro ho modo di poter controbattere.
Salva l'Ucraina! 🇺🇦
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [ASP]Mettere in sicurezza codice invio ordine

Messaggio da Zoff »

Per essere sicuri di controllare che ogni campo assuma un valore che ci si aspetta.
Ad esempio i campi numerici.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4457
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: [ASP]Mettere in sicurezza codice invio ordine

Messaggio da UbuNuovo »

Per ora grazie, guardo se trovo qualcosa di simile a is_numeric() e compagnia.
Errori o vulnerabilità grossolane non ci sono nel codice mi pare di capire.?
Salva l'Ucraina! 🇺🇦
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [ASP]Mettere in sicurezza codice invio ordine

Messaggio da Zoff »

A parte il rischio di injection (che può essere un problema serio) da verificare non mi sembra ci sia altro.

Ma ci ho guardato solo da cellulare, con tutti i limiti del caso
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4457
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: [ASP]Mettere in sicurezza codice invio ordine

Messaggio da UbuNuovo »

Grazie, ho trovato un po di funzioni simili a quelle di PHP.
Nel pomeriggio provo.
Salva l'Ucraina! 🇺🇦
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti