Forum 

Forum AspNuke.it - Il tuo Portale OpenSource in ASP

Creazione nuovo Modulo (Protezione da SQL-Injection)

Autore Messaggio
luy

Principiante
Principiante
6 Discussioni



Profilo - luy
02 maggio 2009 alle 11:54:38 Profilo - luyInvia un messaggio privato Rispondi quotando
Salve, sto faccendo un modulo che usa il db mio.
Volevo sapere come posso evitare gli attachi da sql-injection?.

Che funzione devo metterci per protteggersi da questo attacco?

Grazie.
luy

Principiante
Principiante
6 Discussioni



Profilo - luy
15 maggio 2009 alle 22:04:00 Profilo - luyInvia un messaggio privato Rispondi quotando
nessuno non sa niente per proteggere dagli attaci faccendo altri moduli personali per il portale.?.

grazie.

c'è qualcuno?.
djveleno

Amministratore

Esperto
Esperto
1025 Discussioni



Profilo - djveleno
15 maggio 2009 alle 22:44:07 Profilo - djvelenoInvia un messaggio privato Rispondi quotando
Una delle maggiori protezioni usate in Aspnuke è quella di controllare se l'utente è registrato, solo in quel caso ha la possibilità di interagire col portale, se hai programmato delle pagine asp usando le funzioni di Aspnuke puoi proteggerti usando queste stringhe:

If sPseudo <> "" Then
qui sotto usi la tua funzione personalizzata, alla fine chiudi il ciclo if con:

Else
CreateTable "Role", "",GetTranslation("LANG_MUST_HAVE_ROLE"), ""
End If

Poi, puoi inserire il security code che ti protegge dallo spam, questo va inserito prima di un bottone SUBMIT, ad esempio dopo un form, con lo script:

Session("securitycode") = ucase(CreatePassword(8))
If bUseSecurityCode Then
Response.Write " <tr class=""tableline1"">" & vbCRLF
Response.Write " <td>" & GetTranslation("LANG_SECURITY_CODE") & "</td>" & vbCRLF
Response.Write " <td align=""right""><img src=""code.asp"" border=""0"" width=""78"" height=""16""><input name=""scode"" type=""text"" maxlength=""8"" size=""20"" class=""cell""></td>" & vbCRLF
Response.Write " </tr>" & vbCRLF
Else
Response.Write "<input name=""scode"" type=""hidden"" value=""" & Session("securitycode") & """>" & vbCRLF
End If



---------------
A lavare la testa ai somari, ci si rimette l'acqua e il sapone!

http://aspnuke208.somee.com/Default.asp

luy

Principiante
Principiante
6 Discussioni



Profilo - luy
15 maggio 2009 alle 22:47:11 Profilo - luyInvia un messaggio privato Rispondi quotando
ok, quello va bene. però io itendevo come c'è questo articolo:
http://www.morpheusweb.it/html/manuali/asp/asp_sql_injection.asp

Mi pare di aver capito che devo usare SQLEncrypt ? giusto?.

ti ringrazio molto.
grazie.
djveleno

Amministratore

Esperto
Esperto
1025 Discussioni



Profilo - djveleno
16 maggio 2009 alle 09:17:48 Profilo - djvelenoInvia un messaggio privato Rispondi quotando
Puoi usare un semplice comando Replace, scrivendo una funzione in un file asp che includerai in ogni file che esegue interrogazioni al db, come ad esempio il nostro functions-inc.asp.

Function fixQ(rSQL)
fixQ = Replace(rSQL, "'", "''")
End Function

che andrai poi ad usare così:

rSQL = "INSERT INTO users("user", "password") VALUES ('" & FixQ("sUser") & "', '" & FixQ("sPassword") & "')"

Così sarai protetto da ogni tentativo di injetction da form.
---------------
A lavare la testa ai somari, ci si rimette l'acqua e il sapone!

http://aspnuke208.somee.com/Default.asp

luy

Principiante
Principiante
6 Discussioni



Profilo - luy
16 maggio 2009 alle 16:44:15 Profilo - luyInvia un messaggio privato Rispondi quotando
ok, ma questa qui cosa serve allora?
Non è meglio usare tutto il codice di aspnuke?.

grazie.
ecco il codice che ho trovato dentro databases-inc.asp.

' Encrypt text to be SQL compliant
' IN : sText (string) : text to process
' OUT : (string) : text processed
Function SQLEncrypt(sText)

If Not IsNull(sText) Then
on error resume next
sText = cStr(Trim("" & sText & ""))
If Err.number <> 0 Then
Err.clear
sText = ""
End If
on error goto 0
else
sText = ""
end if

If sText <> "" Then
'do while lcase(left(sText,13)) = "<p>&nbsp;</p>" and len(sText) > 13
' sText = Mid(sText,14)
'loop
do while lcase(left(sText,6)) = "&nbsp;" and len(sText) > 6
sText = Mid(sText,7)
loop
'do while lcase(right(sText,13)) = "<p>&nbsp;</p>" and len(sText) >= 13
' sText = Left(sText,Len(sText)-13)
'loop
do while lcase(right(sText,6)) = "&nbsp;" and len(sText) >= 6
sText = Left(sText,Len(sText)-6)
loop
if lcase(Trim(sText)) = "<p>&nbsp;</p>" Then
sText = ""
end if
'if lcase(Trim(sText)) = "&nbsp;" Then
' sText = ""
'end if

If sText <> "" Then
'HTMLAREA
sText = replace(sText, "location_href", "location_href",1,-1,1)
sText = replace(sText, "VB Script", "VB Script",1,-1,1)
sText = replace(sText, "Java_Script", "Java_Script",1,-1,1)
sText = replace(sText, "<_Script", "<_Script",1,-1,1)
sText = replace(sText, "</_Script", "</_Script",1,-1,1)
sText = replace(sText, "<_form", "<_form",1,-1,1)
sText = replace(sText, "</_form", "</_form",1,-1,1)
sText = replace(sText, "<_iframe", "<_iframe",1,-1,1)
sText = replace(sText, "</_iframe", "</_iframe",1,-1,1)
' sText = replace(sText, "script", "scr_ipt",1,-1,1)
sText = replace(sText, "<_applet", "<_applet",1,-1,1)
sText = replace(sText, "</_applet", "</_applet",1,-1,1)
sText = replace(sText, "<_object", "<_object",1,-1,1)
sText = replace(sText, "</_object", "</_object",1,-1,1)
sText = replace(sText, "<_embed", "<_embed",1,-1,1)
sText = replace(sText, "</_embed", "</_embed",1,-1,1)
'double "'"
sText = Replace(sText, "'", "''")
End if
End if

SQLEncrypt = sText
End Function
djveleno

Amministratore

Esperto
Esperto
1025 Discussioni



Profilo - djveleno
16 maggio 2009 alle 22:08:59 Profilo - djvelenoInvia un messaggio privato Rispondi quotando
Il codice che hai riportato serve ad inibire l'uso di tags html o di script nei form, infatti noterai che viene eseguito un Replace per i tags non consentiti.
---------------
A lavare la testa ai somari, ci si rimette l'acqua e il sapone!

http://aspnuke208.somee.com/Default.asp

luy

Principiante
Principiante
6 Discussioni



Profilo - luy
21 maggio 2009 alle 21:41:02 Profilo - luyInvia un messaggio privato Rispondi quotando
quindi se metto quella lì, non serve fare un'altra funzione replace dei apici etc...

quindi posso utilizzare quella?.


grazie.
djveleno

Amministratore

Esperto
Esperto
1025 Discussioni



Profilo - djveleno
21 maggio 2009 alle 22:01:21 Profilo - djvelenoInvia un messaggio privato Rispondi quotando
Ovviamente, se usi una funzione che già effettua un Replace sia dei tags che degli apici, non è necessario scriverne un'altra.
---------------
A lavare la testa ai somari, ci si rimette l'acqua e il sapone!

http://aspnuke208.somee.com/Default.asp

luy

Principiante
Principiante
6 Discussioni



Profilo - luy
21 maggio 2009 alle 22:05:05 Profilo - luyInvia un messaggio privato Rispondi quotando
ok, grazie.
buona serata. :)

Log in

Login
Password
Memorizza i tuoi dati:

Cerca

 

Sostieni AspNuke

Un piccolo gesto per aiutarci a mantenere AspNuke.it online

Promo

MusicWebItalia.it
Video Testi Traduzioni Spot Colonne sonore Accordi e Spartiti gratis.

Visitatori

Visitatori Correnti : 206
Membri : 0 offline Anna

Iscritti

 Utenti: 18940
Ultimo iscritto : glauco
Lista iscritti
Messaggi privati: 3373 Commenti: 2210 Immagini: 39 Downloads: 144 Articoli: 49 Pagine: 101 Siti web: 558 Notizie: 180 Sondaggi: 11 Preferiti: 5685170 Post sui forum: 51195 Libro degli ospiti: 4 Eventi: 7

Versioni

Temi