J'essaie de sécuriser un site Web Classic ASP/VBScript en paramétrant les instructions SQL.
J'ai la fonction suivante:Comment utiliser un objet ADODB.CommandObject avec ADODB.RecordSet?
Function OpenUpdateableRS(strSQL)
Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQL, cnDZ, adOpenKeyset, adLockPessimistic, adCmdText
Set OpenUpdateableRS = rs
Set rs = Nothing
End Function
Je l'intention de le convertir en quelque chose comme:
Function SecureOpenUpdateableRS(strSQL, strParam1, strParam2)
Dim rs
Dim cmdOB
Set cmdOB = Server.CreateObject("ADODB.CommandObject")
With cmdOB
.ActiveConnection = cnDZ
.CommandText = strSQL
.Parameters(0).value = strParam1
.Parameters(0).value = strParam2
End With
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open cmdOB.Execute, , adOpenKeyset, adLockPessimistic
Set SecureOpenUpdateableRS = rs
Set rs = Nothing
End Function
Quand j'appelle la fonction avec:
Set rs = SecureOpenUpdateableRS("SELECT CustID, LastActive, LoggedIn, SessionID FROM tblLogins WHERE EMail = ? AND PWord = ?", strEMail, strPassword)
I obtenir un "500 - Erreur interne du serveur" qui est probablement parce que je débogage désactivé sur le serveur.
Des idées sur comment rendre la fonction d'origine plus sûre sans la casser?
Merci pour la réponse rapide. Est-il possible que je peux utiliser des instructions paramétrées sans être sûr du type des paramètres d'entrée? – Vinayak
Comme le code sur cette page StackOverflow: http://stackoverflow.com/questions/11020846/classic-asp-protection-against-sql-injection – Vinayak